Android studio не позволяет мне использовать PrimaryKey для комнаты

#kotlin #save #entity #android-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 . Однако это приводит к ошибке при попытке создать приложение:

Не удалось выполнить задачу»: commonmodel:kaptDebugKotlin». При выполнении org.jetbrains произошел сбой.kotlin.gradle.внутренний.KaptExecution java.язык.отражение.Исключение InvocationTargetException (нет сообщения об ошибке)

Не слишком хорошо знаком с комнатой, чтобы понять, что я делаю не так. Но как только я вернусь к старому способу использования @PrimaryKey , я смогу создать и запустить приложение…

Ответ №1:

Ваша проблема @PrimaryKey var slidingDoorType: String? = "" в декларировании. проблема в том, что у вас не может быть полей, допускающих обнуление, в качестве первичных ключей.

Чтобы исправить это, измените тип на ненулевой и удалите @PrimaryKey , потому что вы уже включили это поле, используя primaryKeys свойство @Entity .

 var slidingDoorType: String = ""
 

Комментарии:

1. Ах, здорово, все отлично сработало, спасибо!