Android 房间Kotlin找不到字段的setter

Android 房间Kotlin找不到字段的setter,android,kotlin,android-room,Android,Kotlin,Android Room,嗨,我正在尝试在基于MVP的项目中使用带有Kotlin的房间 我的问题是,当我创建一个数据类和相关的DAO时,所有的类都会成功生成,但是当我创建第二个数据类和它的DAO时,错误:找不到字段的setter。在android studio中的rebuild命令中抛出 @Entity(tableName = "TB_CLASSES") class TbClass( @ColumnInfo(name = "ID") @PrimaryKey(autoGenerate = true) var id: In

嗨,我正在尝试在基于
MVP
的项目中使用带有
Kotlin
的房间

我的问题是,当我创建一个数据类和相关的
DAO
时,所有的类都会成功生成,但是当我创建第二个数据类和它的
DAO
时,
错误:找不到字段的setter。
在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)

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

创建一个
数据类
,它将为属性提供
设置器
获取器

@Entity(tableName = "TB_CLASSES")
data class TbClass( //< add data prior to class
@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="")

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

以下情况会在编译时导致错误:

 @ColumnInfo(name = "IS_SOLVED") var isSolved 
但当我将上述内容更改为以下内容时,错误得到解决:

 @ColumnInfo(name = "IS_SOLVED") var solved 
我们不能将SQLite保留关键字用于字段命名。
我使用的是Room 1.0.0版和kotlin 1.1.51版。

对于像我这样缺乏关注的人,通过谷歌在这里绊倒,使用
val
而不是
var
会给出同样的错误信息

 @ColumnInfo(name = "IS_SOLVED") var solved