使用构造函数生成房间id



我使用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)
}

在活动中,我将初始化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为空
而且带有主键和autoGenerate标志的整数字段也允许null0初始值
所以我想最好写

@PrimaryKey(autoGenerate = true) var uid: Long,
// ...
) : this(0L, "", 0, 0)

最新更新