如何在不提供 id 的情况下自动生成 Room 数据库 id
How to autogenerate a Room database id without providing an id
我正在尝试创建一个房间数据库,我希望插入其中的每个项目都有自己的唯一 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)
因为你的数据classNote
有三个参数。
所以你必须通过传递三个参数来创建Note
。
这与自动生成或房间无关。
创建一个 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,
//.....
}
您可以简单地给 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)
我正在尝试创建一个房间数据库,我希望插入其中的每个项目都有自己的唯一 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)
因为你的数据classNote
有三个参数。
所以你必须通过传递三个参数来创建Note
。
这与自动生成或房间无关。
创建一个 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,
//.....
}
您可以简单地给 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)