我正在尝试创建一个房间数据库,但我希望插入其中的每个项目都具有自己的唯一ID,而无需我提供它,问题是当我尝试将新项目插入数据库时,出现错误提示我要提供一个ID。
这是我的实体:
@Entity(tableName = "notes_table")
data class Note(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
@ColumnInfo(name = "description")
val description: String,
@ColumnInfo(name = "priority")
var priority: Int)
有没有一种方法可以让数据库创建自己的自动生成的自动增加的id列,而无需我像这样添加它:
val item = Note(id, item, priority)
insert(item)
而是这样做:
val item = Note(item, priority)
insert(item)
答案 0 :(得分:2)
您只需为id
提供一个默认值,然后将其放在最后:
@Entity(tableName = "notes_table")
data class Note(
@ColumnInfo(name = "description")
val description: String,
@ColumnInfo(name = "priority")
var priority: Int)
@PrimaryKey(autoGenerate = true) //must be at the end
val id: Int = 0 //Long type recommend
)
然后您可以:
val item = Note(item, priority)
insert(item)
答案 1 :(得分:1)
创建一个以constructor
和item
作为参数的priority
@Entity(tableName = "notes_table")
data class Note (var item: String,
@ColumnInfo(name = "priority")
var priority: String) {
@PrimaryKey(autoGenerate = true)
var id: Long = 0,
//.....
}
答案 2 :(得分:0)
因为数据类super()
具有三个参数。
因此,您必须通过传递三个参数来创建Note
。
与自动生成或空间无关。