首页 > 解决方案 > Android Room 自动生成和初始化

问题描述

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

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

我的代码有两件事我不喜欢:

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

我尝试使用lateinit var但编译器不允许我在原始类型上执行此操作。有没有办法在 Kotlin 中克服上面提到的两个问题?

标签: androidkotlinandroid-roomauto-generate

解决方案


使用辅助构造函数解决这个问题有什么想法?

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

推荐阅读