我正在使用房间图书馆,我有下面提到的实体:
@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:
^
请为此提出一些修复建议。
谢谢
大多数时候问题的发生是由于以下原因:
问题 1:
Final 字段:字段标有 val,它们实际上是最终字段,没有 setter 字段。
解决方案:将字段val替换为var。您可能还需要初始化字段。
问题2:
是关键字:我们不能使用 sqllite 保留关键字行来命名字段 source例如
下面会报错
@ColumnInfo(name = "IS_ACTIVE") var isActive
解决方案:解决方案是:
@ColumnInfo(name = "IS_ACTIVE") var active
我是一名优秀的程序员,十分优秀!