我有一个无法更改或迁移的 SQLite 数据库,需要使用 Room 将 NUMERIC
列映射到我的 Kotlin 类。我需要使用什么作为 Kotlin 类中字段的数据类型?使用 Boolean、Integer、Double、String 时,它失败并显示类似的错误消息:
Expected:
TableInfo{name='calendars', columns={monday=Column{name='monday', type='REAL', affinity='4', ...}
Found:
TableInfo{name='calendars', columns={monday=Column{name='monday', type='NUMERIC', affinity='
编辑: 我想可以更新数据库并更改列类型。但是我还是想知道有没有办法用Room映射
NUMERIC
。 最佳答案
如果你有一个现有的数据库,用 SQLite 浏览器打开它,通过选择表并编辑它来更改数据类型(将类型更改为 REAL)。这会保留数据,之后您可以再次使用数据库。
目前,Room 似乎在映射这些数据类型时遇到问题,因此您必须在数据库中显式使用 REAL。
此外,分别在您的数据对象中注释您的字段可能是一个好主意。
@ColumnInfo(typeAffinity = ColumnInfo.REAL)
public double yourField;