我的实体类:
@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)
不要将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
}
如何避免虚构id
只需将默认值设置为0(或空(
@Entity(tableName = "student")
data class Student(
@PrimaryKey(autoGenerate = true)
val id: Long = 0, <-- default value (or use null)
id是由Room数据库自动生成的,这意味着我为id放入构造函数的内容无论如何都会被覆盖
不是那样的。如果显式设置id
,则此id
将在插入时使用。
如果您只想在实体中为您的案例自动增加id,请将id的类型设置为Int,并在构造函数中为id值参数使用null值,这将为您处理工作。