【问题标题】:Android studio don't let me use primaryKeys for RoomAndroid Studio 不允许我在 Room 中使用 primaryKeys
【发布时间】:2021-09-24 09:26:20
【问题描述】:

为了给保存的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。然而,这在尝试构建应用程序时会产生错误:

任务 ':commonmodel:kaptDebugKotlin' 执行失败。 执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障 java.lang.reflect.InvocationTargetException(没有错误信息)

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

【问题讨论】:

    标签: kotlin save entity android-room


    【解决方案1】:

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

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

    var slidingDoorType: String = ""
    

    【讨论】:

    • 啊,很好,效果很好,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多