Sam*_*hen 9 android kotlin android-database android-room
我的实体类:
@Entity(tableName = "student")
data class Student(
@PrimaryKey(autoGenerate = true)
val id: Long,
val name: String,
val age: Int,
val gpa: Double,
val isSingle: Boolean
)
Run Code Online (Sandbox Code Playgroud)
问题是,由于id是由Room数据库自动生成的- 意味着无论我id在构造函数中放入什么,它无论如何都会被覆盖,并且因为它是构造函数中的参数之一,我必须id每次都给出像这样:
val student = Student(0L, "Sam", 27, 3.5, true)
Run Code Online (Sandbox Code Playgroud)
我怎样才能避免编造id这样我就可以像这样输入必要的数据:
val student = Student("Sam", 27, 3.5, true)
Run Code Online (Sandbox Code Playgroud)
不要将 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
}
Run Code Online (Sandbox Code Playgroud)
如何避免伪造id
只需将默认值设置为 0(或 null)
@Entity(tableName = "student")
data class Student(
@PrimaryKey(autoGenerate = true)
val id: Long = 0, <-- default value (or use null)
Run Code Online (Sandbox Code Playgroud)
id 是由 Room 数据库自动生成的 - 意味着无论我将 id 添加到构造函数中,它都会被覆盖
不是那样的。如果您id明确设置,那么这id将在插入时使用。
| 归档时间: |
|
| 查看次数: |
642 次 |
| 最近记录: |