Android 房间数据库创建没有 ID 的实体对象
Android Room Database Create Entity Object without Id
我的实体class:
@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)
How can I avoid making up the id
只需将默认值设置为 0(或空)
@Entity(tableName = "student")
data class Student(
@PrimaryKey(autoGenerate = true)
val id: Long = 0, <-- default value (or use null)
id is auto-generated by the Room database - means no matther what I put for the id into the constructor it will be overridden anyway
不太喜欢。如果您明确设置 id
,则此 id
将用于插入。
如果您只想在您的实体中为您的情况设置自动递增 id,请将 id 的类型设置为 Int,并在您的构造函数中为 id 值参数使用 null 值,这会为您处理工作。
不要将 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
}
我的实体class:
@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)
How can I avoid making up the id
只需将默认值设置为 0(或空)
@Entity(tableName = "student")
data class Student(
@PrimaryKey(autoGenerate = true)
val id: Long = 0, <-- default value (or use null)
id is auto-generated by the Room database - means no matther what I put for the id into the constructor it will be overridden anyway
不太喜欢。如果您明确设置 id
,则此 id
将用于插入。
如果您只想在您的实体中为您的情况设置自动递增 id,请将 id 的类型设置为 Int,并在您的构造函数中为 id 值参数使用 null 值,这会为您处理工作。
不要将 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
}