Cannot find setter for field - 错误解决记录

使用JetPack框架 Room 时,报错
Cannot find setter(or getter) for field.
可能原因有两个:

  • 字段有 val限定符,改为 var
  • 不能拥有从isXxx 开始的字段名。例如:
   @Entity(tableName = "user")
   data class User (
        @PrimaryKey var id: Long? = null,
        var userName: String = "",
        var isConnectedToFB: Boolean = false,
    )

根据https://stackoverflow.com/a/46753804/2914140,如果有自动生成的主键,则应这样写:

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

参考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章