In order to set uniqueness for the entities saved, I set primaryKeys like this:
@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
}
rather than using the standard @PrimaryKey. This however produces an error when trying to build the app:
Execution failed for task ':commonmodel:kaptDebugKotlin'. A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution java.lang.reflect.InvocationTargetException (no error message)
Not too familiar with room to know what I'm doing wrong. But as soon as I revert to the old way of using @PrimaryKey I can build and run the app...
CodePudding user response:
Your problem is @PrimaryKey var slidingDoorType: String? = "" declaration. the issue is that you can't have nullable fields as primary keys.
In order to fix this change the type to non-nullable and remove the @PrimaryKey because you have already included this field using the primaryKeys property of @Entity.
var slidingDoorType: String = ""
