如何在 Room 中映射 NUMERIC SQLite 类型?

Jak*_*sky 5 sqlite orm android android-room

我有一个无法更改或迁移的 SQLite 数据库,需要NUMERIC使用 Room将一列映射到我的 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='
Run Code Online (Sandbox Code Playgroud)

编辑:我想可以更新数据库并更改列类型。但是我还是想知道有没有NUMERIC用Room映射的方法。

Ale*_*cha 3

如果您有现有数据库,请使用 SQLite 浏览器打开它,通过选择表并编辑它来更改数据类型(将类型更改为 REAL)。这会保留数据,之后您可以再次使用数据库。

目前,Room 似乎在映射这些数据类型时遇到问题,因此您必须在数据库中显式使用 REAL。

另外,分别在数据对象中注释您的字段可能是个好主意。

@ColumnInfo(typeAffinity = ColumnInfo.REAL)
public double yourField;
Run Code Online (Sandbox Code Playgroud)