无法找到填充字段 – 使用Kotlin与房间数据库

我正在与Room持久性库集成。 我在Kotlin有一个数据类:

@Entity(tableName = "story") data class Story ( @PrimaryKey val id: Long, val by: String, val descendants: Int, val score: Int, val time: Long, val title: String, val type: String, val url: String ) 

@Entity@PrimaryKey注释用于Room库。 当我尝试构建时,错误是失败的:

 Error:Cannot find setter for field. Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details. 

我也尝试提供一个默认的构造函数:

 @Entity(tableName = "story") data class Story ( @PrimaryKey val id: Long, val by: String, val descendants: Int, val score: Int, val time: Long, val title: String, val type: String, val url: String ) { constructor() : this(0, "", 0, 0, 0, "", "", "") } 

但是这不起作用。 需要注意的是,如果我把这个Kotlin类转换成一个带有getter和setter的Java类,它就可以工作。 任何帮助表示赞赏!

由于你的领域用val标记,他们是有效的,没有setter字段。

试着用var切换val 。 您可能还需要初始化这些字段。

 @Entity(tableName = "story") data class Story ( @PrimaryKey var id: Long? = null, var by: String = "", var descendants: Int = 0, var score: Int = 0, var time: Long = 0L, var title: String = "", var type: String = "", var url: String = "" )