android - Android Room 自动生成和初始化
问题描述
我有一个包含Stuff实体的 Room 数据库。这些实体具有将自动生成的 ID:
@Entity(tableName = "stuff")
data class Stuff(val text: String) {
@PrimaryKey(autoGenerate = true) var id: Int = 0
}
我的代码有两件事我不喜欢:
- 我用 0 初始化 id,即使它应该由 Room 初始化。
- id 数据成员是可变的。
我尝试使用lateinit var但编译器不允许我在原始类型上执行此操作。有没有办法在 Kotlin 中克服上面提到的两个问题?
解决方案
使用辅助构造函数解决这个问题有什么想法?
@Entity(tableName = "stuff")
data class Stuff(
@PrimaryKey(autoGenerate = true)
val id: Int,
val text: String
) {
constructor(text: String) : this(0,text)
}
推荐阅读
- java - 要求您使用 ACTION_OPEN_DOCUMENT 或相关 API 获得访问权限
- sql - 进行正则表达式替换所有列的 psql 导出的最佳方法是什么?
- python - 为什么 python 在 tkinter 中只显示列表的前半部分?
- amazon-s3 - 合并 S3 中的小文件以创建 10 Mb 文件
- excel - 案例声明以防止打开某些文件?
- java - 序列化时间戳转换为秒
- android - 将可绘制数组与数组字符串进行比较 android studio
- javascript - 如何在 React 中使用来自 API 的动态数据创建树形显示?
- azure - 如果我的函数在 24 小时内没有被调用,我可以设置 Azure Application Insight 警报吗?
- c - C 编程寄存器结构