#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. Ах, здорово, все отлично сработало, спасибо!