Android Room自动生成和初始化

时间:2019-04-28 12:59:15

标签: android kotlin android-room auto-generate

我有一个包含 Stuff 实体的Room数据库。这些实体的ID将自动生成:

@Entity(tableName = "stuff")
data class Stuff(val text: String) {
    @PrimaryKey(autoGenerate = true) var id: Int = 0
}

我的代码有两点我不喜欢:

  1. 我将id初始化为0,即使应该由Room初始化。
  2. id数据成员是可变的。

我尝试使用 lateinit var ,但是编译器不允许我对原始类型进行操作。有没有办法克服Kotlin中上述两个问题?

1 个答案:

答案 0 :(得分:1)

如何考虑使用二级构造函数解决这个问题?

@Entity(tableName = "stuff")
data class Stuff(
  @PrimaryKey(autoGenerate = true)
  val id: Int,
  val text: String
) {
   constructor(text: String) : this(0,text)
}