首页 > 解决方案 > Android房间数据库创建没有ID的实体对象

问题描述

我的实体类:

@Entity(tableName = "student")
data class Student(
    @PrimaryKey(autoGenerate = true)
    val id: Long,

    val name: String,
    val age: Int,
    val gpa: Double,
    val isSingle: Boolean
) 

问题是,由于id是由数据库自动生成的Room- 意味着无论我id在构造函数中放入什么,它都会被覆盖,并且因为它是构造函数中的参数之一,所以我必须id每次都给出像这样:

val student = Student(0L, "Sam", 27, 3.5, true)

我怎样才能避免弥补,id所以我可以像这样输入必要的数据:

val student = Student("Sam", 27, 3.5, true)

标签: androidkotlinandroid-roomandroid-database

解决方案


不要将 id 放在构造函数中:

@Entity(tableName = "student")
data class Student(
    val name: String,
    val age: Int,
    val gpa: Double,
    val isSingle: Boolean
) {
    @PrimaryKey(autoGenerate = true)
    var id: Long? = null
}

推荐阅读