我想知道,在Kotlin中使用Room Persistence时,可以为两个实体使用一个模型吗?
例如,我必须创建两个寻呼机,它们是普通页和星型页。它们都有以下字段。
id: String?,标题: String?,imageUrl:String?,isUserLike: Boolean (等等)
数据来自两个独立的服务,我想单独保存它。我怎样才能做到这一点,或者有办法解决这个问题?
谢谢
我是Kotlin和Room persistence的初学者。
发布于 2018-02-26 07:04:38
您可以创建一个单独的抽象类,其中包含所有这些公共字段。
abstract class BaseModel(
@PrimaryKey
var id: String? = null,
var caption: String? = null,
var imageUrl: String? = null,
...
) {
...
}然后将该抽象类扩展到其他类上。
@Entity(tableName = "a_model")
data class AModel (
mId: String? = null,
mCaption: String? = null,
mImageUrl: String? = null,
...
): BaseModel(id = mId,
caption = mCaption,
imageUrl = mImageUrl,
...) {
...
}还可以添加该实体独占的其他字段。
@Entity(tableName = "b_model")
data class BModel (
mId: String? = null,
mCaption: String? = null,
mImageUrl: String? = null,
...
var nonCommonField: String? = null, // like this
): BaseModel(id = mId,
caption = mCaption,
imageUrl = mImageUrl,
...) {
...
}如果我没记错的话,Android将要求每个字段都有一个默认值或一个空构造函数。
https://stackoverflow.com/questions/48620809
复制相似问题