我正在尝试将我的一些 Android Java POJO 类迁移到 Kotlin。其中一些类用作房间实体。
根据使用 Room 实体定义数据的文档,getter 和 setter 将在 JavaBean 约定中命名。
如果您使用 getter 和 setter 方法,请记住它们基于 Room 中的 JavaBeans 约定。
有了 JavaBeans 和一个布尔字段,在 Java 中应该是这样的
@Entity
public class MyObject {
// other stuff
public MyObject() {
this.enabled = false;
}
public boolean isEnabled() { return this.enabled; }
public void setEnabled(boolean enabled) { this.enabled = enabled; }
}
现在在 DAO 中,可以这样引用 enabled = 1
@Query("select * from myobject where enabled = 1")
public List<MyObject> loadEnabledObjects();
在 Kotlin 中,对象简化为这个
@Entity
class MyObject {
// other stuff
var isEnabled: Boolean = false
}
像以前一样使用 DAO 时,会出现编译时错误
错误:查询有问题:[SQLITE_ERROR] SQL 错误或缺少数据库(没有该列:已启用)
这似乎是 Room 实体在我的 Kotlin 版本中的行为不同,要使用 DAO 引用 Kotlin 版本,我必须更改查询以使用 isEnabled = 1
@Query("select * from myobject where isEnabled = 1")
public List<MyObject> loadEnabledObjects();
没有任何关于使用 Room 实体定义数据的官方 Kotlin 示例,我想在更改所有 DAO 之前确保这是正确的行为。
这是正确的,还是我遗漏了 Kotlin Entity 这样的注释或不同的命名方案?
慕的地6264312
摇曳的蔷薇
相关分类