kotlin - 房间用构造函数生成ID

标签 kotlin android-room

我是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标志的整数字段也允许0autoGenerate初始值
所以我想写更好

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

关于kotlin - 房间用构造函数生成ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63100315/

相关文章:

android - 如何从gradle中排除kotlin文件

kotlin - 调用 Continuation.resumeX() 失败一定是个问题吗?

android - Room 在哪里保存数据库 Android?

java - 如何在 android 中的对象框数据库中插入对象列表?喜欢房间数据库

android - 在开发环境中启动时清除 Room 数据库

android - 迁移自动生成主键

android - 如何获取用户输入进行查询?

android - 将数据从 Viewmodel 设置为 Activity android kotlin

java - 如何向 IntelliJ 添加源代码库(例如来自 Github)?

java - 带有 AsyncRestTemplate Netty 客户端的 Spring Boot 失败