我有一个预先存在的SQLite数据库,日期、时间保存为记号,因此SQLite列是Bigint.我该如何为此创建一个roomdb实体?
我try 在RoomDb中使用Long,但在生成数据库时它显示为整数,我还try 使用将Long转换为DateTime,但它仍然存储为整数.
我有一个预先存在的SQLite数据库,日期、时间保存为记号,因此SQLite列是Bigint.我该如何为此创建一个roomdb实体?
我try 在RoomDb中使用Long,但在生成数据库时它显示为整数,我还try 使用将Long转换为DateTime,但它仍然存储为整数.
我try 在RoomDb中使用Long,但在生成数据库时它显示为整数,我还try 使用将Long转换为DateTime,但它仍然存储为整数.
也就是说,正确的LONG(Kotlin)将存储在SQLite类型为INTEGER的列中,该列可以保存63位有符号整数值.
尽管在SQLite中,列类型非常灵活(在大多数情况下,任何类型的值都可以存储在任何类型的列中),但Room需要严格得多的列类型,限制为
仅当@Entity
注释类中的字段不是直接(Room满足上述要求),如其他对象(例如,Date)时,才需要TypeConverter.
如果您有一个预先存在的数据库,那么很可能需要对其进行转换以满足Room的期望.
你提到BIGINT是一种类型.房间不会接受这个的.列类型必须更改为整型.列类型的转换(以及重要的约束,如NOT NULL)MUST符合Room的预期.
要确定Room的期望,最简单的方法是
@Entity
个带注释的类.@Database
‘S entities
参数中.@Database
注释类同名的文件/类.当然,在使用BIGINT作为列类型的情况下,数据库可能需要转换.这可以在将数据库文件作为assets资源 包括之前进行,也可以通过预打包的数据库回调进行.