无法找到填充字段 – 使用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类,它就可以工作。 任何帮助表示赞赏!

One Solution collect form web for “无法找到填充字段 – 使用Kotlin与房间数据库”

由于你的领域用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 = "" ) 
  • 在kotlin中创建一个类型为Comparable <T>的数组的泛型类?
  • 如何使用kotlin在android中初始化小部件
  • MissingMethodInvocationException在Kotlin中测试已打开的类
  • 迭代时返回collection元素的双重索引
  • 孩子Kotlin测试类运行所有父母测试
  • 下载的文件列表为空
  • 点击ViewHolder中的RecyclerView项目
  • 如何用Kotlin interop强制执行泛型
  • 当Kotlin函数不采用可空类型时,正确的方法是什么?
  • 我怎样才能得到一个Kotlin对象的名字?
  • 不幸的是,“应用程序名称”已经停止因为Jsoup库
  • Kotlin language will be the best programming language for Android.