Android Room 库错误:找不到字段的设置器。(科特林)

Aks*_*ood 4 android kotlin android-room

我正在使用房间图书馆,我有下面提到的实体:

@Parcelize
@Entity(tableName = "tb_option")
data class OptionsTable(
        var question_id: Int? = null,
        var option_id: Int? = null,
        var option: String? = null,
        var is_selected: Int? = null,


        @PrimaryKey(autoGenerate = true)
        var sr_no: Int = 0) : Parcelable
Run Code Online (Sandbox Code Playgroud)

如您所见,我已将所有字段声明为,var但仍显示错误为:

error: Cannot find setter for field.
e: 

e:     private java.lang.Integer is_selected;
e:      



                     ^
Run Code Online (Sandbox Code Playgroud)

请为此提出一些解决方案。

谢谢

Waq*_*Haq 6

大多数情况下,问题发生的原因如下:

问题1:

Final field:字段用 val 标记,它们实际上是 final 并且没有 setter 字段。

解决方法:更换域法尔变种。您可能还需要初始化字段。

问题2:

is 关键字:我们不能将 sqllite 保留关键字行用于命名源的字段,例如

以下将导致错误

 @ColumnInfo(name = "IS_ACTIVE") var isActive
Run Code Online (Sandbox Code Playgroud)

解决方案:解决方案是:

@ColumnInfo(name = "IS_ACTIVE") var active
Run Code Online (Sandbox Code Playgroud)