@Ignore如何在Room的数据类中工作

时间:2019-07-08 01:37:56

标签: android kotlin android-room

我试图为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将不会写入包裹。如何将变量保留在类中而不创建列并仍然保留在包裹中?

谢谢

1 个答案:

答案 0 :(得分:2)

@Ignore在当前情况下是requires @JvmOverloads注释:

data class MyTable @JvmOverloads constructor(
    ...
    @Ignore var selected: Boolean? = false
)