Вам нужно переместить
@PrimaryKey(autoGenerate = true) @ColumnInfo(name = "stack_id") val
stackId: Int = 0
в конструктор.
@Entity
class Stack(
@PrimaryKey(autoGenerate = true) @ColumnInfo(name = "stack_id") val
stackId: Int = 0,
@ColumnInfo(name = "stack_name") val stackName: String,
@ColumnInfo(name = "col_1") val column1: String,
@ColumnInfo(name = "col_2") val column2: String
)
Почему это работает?Это свойство val
, поэтому оно является окончательным / неизменным, но присваивание в конструкторе является значением по умолчанию, которое можно переопределить, передав значение.
Однако в вашем примере свойство находится в теле классаи ему присваивается значение 0 в init, и его нельзя изменить, так как свойство является неизменным.Второй вариант, как указано, делает свойство изменяемым, используя var
вместо val
.