使用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
}