我是usind Room DB,我有一个需要生成ID的类:
@Entity
data class TaskEntity(
@PrimaryKey(autoGenerate = true) var uid: Long?,
@ColumnInfo(name = "title") var title: String?,
@ColumnInfo(name = "start") var startTime: Long?,
@ColumnInfo(name = "duration") var duration: Long?,
): Serializable {
constructor(
) : this(null, "", 0, 0)
}
在 Activity 中,我将在运行时初始化calss并设置参数:var task: TaskEntity
task = TaskEntity()
task.name = cal.name
....
道课:@Dao
interface TasksDao {
@Query("SELECT * FROM taskentity ORDER BY startTime ASC")
fun getAllTasks(): List<TaskEntity>
@Insert
fun insert(item: TaskEntity)
@Delete
fun delete(item: TaskEntity)
@Update
fun update(item: TaskEntity)
}
但是ID始终像在构造函数中一样为null。我已经在一些文档中看到过,如果它的null将自动生成。我想念什么?
最佳答案
您已经手动创建了TaskEntity
对象,因此uid
为null
带有主键和null
标志的整数字段也允许0
或autoGenerate
初始值
所以我想写更好
@PrimaryKey(autoGenerate = true) var uid: Long,
// ...
) : this(0L, "", 0, 0)
关于kotlin - 房间用构造函数生成ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63100315/