首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以对房间持久性中的两个实体使用一个模型吗?

我可以对房间持久性中的两个实体使用一个模型吗?
EN

Stack Overflow用户
提问于 2018-02-05 10:46:35
回答 1查看 1K关注 0票数 0

我想知道,在Kotlin中使用Room Persistence时,可以为两个实体使用一个模型吗?

例如,我必须创建两个寻呼机,它们是普通页和星型页。它们都有以下字段。

id: String?,标题: String?,imageUrl:String?,isUserLike: Boolean (等等)

数据来自两个独立的服务,我想单独保存它。我怎样才能做到这一点,或者有办法解决这个问题?

谢谢

我是Kotlin和Room persistence的初学者。

EN

回答 1

Stack Overflow用户

发布于 2018-02-26 07:04:38

您可以创建一个单独的抽象类,其中包含所有这些公共字段。

代码语言:javascript
复制
abstract class BaseModel(
    @PrimaryKey
    var id: String? = null,
    var caption: String? = null,
    var imageUrl: String? = null,
    ...
) {
    ...
}

然后将该抽象类扩展到其他类上。

代码语言:javascript
复制
@Entity(tableName = "a_model")
data class AModel (
    mId: String? = null,
    mCaption: String? = null,
    mImageUrl: String? = null,
    ...
): BaseModel(id = mId,
        caption = mCaption, 
        imageUrl = mImageUrl,
        ...) {
    ...
}

还可以添加该实体独占的其他字段。

代码语言:javascript
复制
@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将要求每个字段都有一个默认值或一个空构造函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48620809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档