我试图为Room创建一个数据类,并且该类也有一个仅用于视图的字段。我不想将数据保存到Room中。
@Entity(tableName = "MyTable")
@Parcelize
data class MyTable(
@SerializedName("id") @PrimaryKey val id: String,
@SerializedName("field1") val field1: String?,
var selected: Boolean? = false //todo use @Ignore
) : Parcelable
上面的代码有效。但是,每当我尝试对带有@Ignore
变量的变量使用selected
注释时。它给了我以下错误
error: Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type).
如果我从
这样的构造函数中删除变量, @Entity(tableName = "MyTable")
@Parcelize
data class MyTable(
@SerializedName("id") @PrimaryKey val id: String,
@SerializedName("field1") val field1: String?
) : Parcelable{
var selected: Boolean? = false //todo use @Ignore
}
字段selected
将不会写入包裹。如何将变量保留在类中而不创建列并仍然保留在包裹中?
谢谢
答案 0 :(得分:2)
@Ignore
在当前情况下是requires @JvmOverloads
注释:
data class MyTable @JvmOverloads constructor(
...
@Ignore var selected: Boolean? = false
)