使用现有布尔列类型的房间迁移
到目前为止我发现了什么
所有带注释的类@entity都在编译时进行处理,并生成数据库的实现类。然后在访问数据库之前,调用此生成的类的 validateMigration 方法。此验证迁移方法通过原始查询使用现有数据库架构进行验证
PRAGMA table_info mytable name
(参见 android.arch.persistence.room.util.TableInfo 的 L208.java)
现在的问题
我的 sqlite3 db 有一些列类型为布尔值的列。(slqite 在内部处理 int)。现在当我创建房间实体说
public someEntity {
@columnInfo(name="someName")
public Boolean myValue;
}
文件室的创建表查询将为
Create Table someEntity ( myValue INTEGER)
当我们查询现有数据库时,我们得到PRAGMA table_info someEntity
1|myValue|BOOLEAN|0||0
如上所述,房间通过比较字段名称,列类型等来验证(sqlite到房间)的迁移。由于列类型不匹配(布尔值和整数),因此会引发错误,指出迁移失败。
任何人都可以建议解决这个问题吗?我们可以在sqlite中创建布尔列类型吗?(另外,我们不能更改/更改现有表的列类型。
PS:我还看到VARCHAR的类似问题 - 将现有的VARCHAR列与房间一起使用