我想知道,在Kotlin中使用Room Persistence时,是否可以为两个实体使用一个模型?
例如,我必须创建两个寻呼机,它们是一般页面和星形页面。 它们都有以下字段..
id:String?,caption:String?,imageUrl:String?,isUserLike:Boolean (还有更多)
数据来自两个独立的服务,我想单独保存。 我怎么能这样做,或者有什么方法可以解决这个问题?
谢谢
P.S。我是Kotlin和Room persistence的初学者。
答案 0 :(得分:0)
您可以创建一个包含所有这些公共字段的单独抽象类
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会要求字段为每个字段或空构造函数设置默认值。