Android Room: No value passed for parameter

前言

最近写客户端项目时用room数据库时,遇到个问题,编译项目报错:No value passed for parameter 'id',翻译过来是: 没有为参数“id”传递值,下面记录下解决方法

过程

我的实体类如下

1
2
3
4
5
6
@Entity(tableName = "user")
data class User(
@PrimaryKey(autoGenerate = true) var id: Int,
var name: String,
var addr: String,
)

我在新建实体的时候报上面的错

1
val user = User(name = 'jinsc', addr = '1')

因为是让主键自动生成,所以不能给ID赋值,但是不赋值会报错

解决
1
2
3
4
5
6
7
@Entity(tableName = "todos")
data class User(
var name: String,
var addr: String,
) {
@PrimaryKey(autoGenerate = true) var id: Int = 0
}

相等于默认赋值