Android Room library error: Cannot find setter for field. (Kotlin)

Android Room library error: Cannot find setter for field. (Kotlin)

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

@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

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

error: Cannot find setter for field.
e: 

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



                     ^

请为此提出一些修复建议。

谢谢

我从

中删除了 sr_no 的初始化
@PrimaryKey(autoGenerate = true)
        var sr_no: Int = 0

最终代码为:

@PrimaryKey(autoGenerate = true)
        var sr_no: Int

对我有用,因为它是一个自动生成的字段。

大部分时间出现问题的原因如下:

问题一:

Final 字段:字段标有 val,它们实际上是最终字段,没有 setter 字段。

解决方案:将字段val替换为var。您可能还需要初始化字段。

问题二:

是关键字:我们不能使用 sqllite 保留关键字行来命名字段 source 例如

以下会报错

 @ColumnInfo(name = "IS_ACTIVE") var isActive

解决方法:解决方法是:

@ColumnInfo(name = "IS_ACTIVE") var active

使用 kotlin java 代码生成的房间 orm 库存在问题。

我的可选字段isFavorite和编译时同样的错误然后我将我的字段名称更改为favorite然后编译。

之前 var isFavorite: Int? = 0, 工作正常: var favorite: Int? = 0, 谢谢