Android Studio 不允许我在 Room 中使用 primaryKeys
Posted
技术标签:
【中文标题】Android Studio 不允许我在 Room 中使用 primaryKeys【英文标题】:Android studio don't let me use primaryKeys for Room 【发布时间】: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
的旧方式,我就可以构建和运行应用程序...
【问题讨论】:
【参考方案1】:您的问题是@PrimaryKey var slidingDoorType: String? = ""
声明。问题是您不能将可空字段作为主键。
为了解决此问题,请将类型更改为不可为空并删除 @PrimaryKey
,因为您已经使用 @Entity
的 primaryKeys
属性包含此字段。
var slidingDoorType: String = ""
【讨论】:
啊,很好,效果很好,谢谢!以上是关于Android Studio 不允许我在 Room 中使用 primaryKeys的主要内容,如果未能解决你的问题,请参考以下文章
如何从 api 获取数据并将数据插入 Android Studio 中的 ROOM(数据库)?
为啥此查询可以在 Android Studio 中的 App Inspection 的 Database Inspector 部分工作,但不能在 Room Query 中工作?
android studio应用程序的Firebase同步问题