房间 Kotlin 找不到字段的设置器

ali*_*aty 4 android kotlin android-room

嗨,我正在尝试KotlinMVP基于项目的项目中使用 Room 。

我的问题是,当我创建了一个数据类及相关DAO的所有类将成功生成但当创建第二个数据类和它DAOError:Cannot find setter for field.扔在Android Studio中rebuild命令

@Entity(tableName = "TB_CLASSES")
class TbClass(
@ColumnInfo(name = "ID")
@PrimaryKey(autoGenerate = true)  var id: Int =-1,
@ColumnInfo(name = "NAME") var name: String="",
@ColumnInfo(name = "CAPTION") var caption: String="",
@ColumnInfo(name = "TYPE") var type: String="")

@Entity(tableName = "TB_FEATURE_DISA")
class TbFeatureDisa(
@ColumnInfo(name = "ID")
@PrimaryKey(autoGenerate = true) var id: Int=-1,
@ColumnInfo(name = "FEATURE_ID") var featureId: Int=-1,
@ColumnInfo(name = "DISA_ID") var disaId: Int=-1,
@ColumnInfo(name = "IS_SOLVED") var isSolved: Int=-1,
@ColumnInfo(name = "DISA_LEVEL") var disaLevel: Double=-0.1,
@ColumnInfo(name = "RESOLVER_USER_NAME") var resolverUserName: String="",
@ColumnInfo(name = "RESOLVE_TIME") var resolveTime: Date? =null,
@ColumnInfo(name = "REPORT_VIST_ID") var reportVisitId: Int=-1,
@ColumnInfo(name = "REPORT_FAULT_ID") var reportFaultId: Int=-1,
@ColumnInfo(name = "SOLVE_VIST_ID") var solveVisitId: Int=-1,
@ColumnInfo(name = "SOLVE_SERVICE_ID") var solveServiceId: Int=-1,
@ColumnInfo(name = "SOLVE_FUALT_ID") var solveFaultId: Int=-1)
Run Code Online (Sandbox Code Playgroud)

我也检查了这个链接和这个链接,但没有一个对我有用

ali*_*aty 7

我终于找到了解决方案。问题与属性命名有关。

以下原因会在编译时导致错误:

 @ColumnInfo(name = "IS_SOLVED") var isSolved 
Run Code Online (Sandbox Code Playgroud)

但是当我将上述内容更改为以下内容时,错误已解决:

 @ColumnInfo(name = "IS_SOLVED") var solved 
Run Code Online (Sandbox Code Playgroud)

我们不能使用 SQLite 保留关键字进行字段命名。我使用的是 Room 1.0.0 版和 kotlin 1.1.51 版。