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
,因为您已经使用 @Entity
的 primaryKeys
属性 包含了此字段.
var slidingDoorType: String = ""
为了设置保存的 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
,因为您已经使用 @Entity
的 primaryKeys
属性 包含了此字段.
var slidingDoorType: String = ""