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)

不要将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值,这将为您处理工作。

最新更新