Android studio 不允许我对 Room 使用 primaryKeys

Android studio don't let me use primaryKeys for Room

为了设置保存的 entities 的唯一性,我这样设置 primaryKeys

@Entity(primaryKeys = ["name", "slidingDoorType"])
data class ParameterGroup(override var name: String, override var parameterIds: HashSet<Int>, var userCreated: Boolean, @PrimaryKey var slidingDoorType: String? = ""): FilterGroup, Parcelable {
    override var selected: Boolean = true
}

而不是使用标准 @PrimaryKey。但是,这会在尝试构建应用程序时产生错误:

Execution failed for task ':commonmodel:kaptDebugKotlin'. A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution java.lang.reflect.InvocationTargetException (no error message)

不太熟悉房间,不知道我做错了什么。但是一旦我恢复到使用 @PrimaryKey 的旧方法,我就可以构建并 运行 应用程序...

您的问题是 @PrimaryKey var slidingDoorType: String? = "" 声明。问题是您不能将可为空的字段作为主键。

为了解决此问题,请将类型更改为不可空并删除 @PrimaryKey,因为您已经使用 @EntityprimaryKeys 属性 包含了此字段.

var slidingDoorType: String = ""