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

sad*_*dat 7 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
Run Code Online (Sandbox Code Playgroud)

上面的代码有效。但是,每当我尝试将@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).
Run Code Online (Sandbox Code Playgroud)

如果我从构造函数中删除变量,例如

    @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
    }
Run Code Online (Sandbox Code Playgroud)

该字段selected不会写入包裹中。如何在不创建列的情况下将变量保留在类中,同时仍将其保留在包中?

谢谢

gmk*_*k57 4

@Ignore在这种情况下,目前需要 @JvmOverloads注释:

data class MyTable @JvmOverloads constructor(
    ...
    @Ignore var selected: Boolean? = false
)
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

2275 次

最近记录:

5 年,3 月 前