问题描述
我的实体类别:
@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",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(或为null)
@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 value参数使用null值,这将为您处理工作。