gpt4 book ai didi

android-room - Room 是否支持实体继承?

转载 作者:行者123 更新时间:2023-12-03 12:54:58 46 4
gpt4 key购买 nike

我正在尝试迁移我们的项目以使用 Room,顺便说一句,我认为这是向前迈出的一大步。

我有以下结构:

public class Entity extends BaseObservable {

@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "_id", typeAffinity = ColumnInfo.INTEGER)
private long mId;

@ColumnInfo(name = "is_dirty")
@TypeConverters(BooleanTypeConverter.class)
private boolean mIsDirty;

// default constructor and accessors omitted for brevity
}

@Entity(tableName = "some_entities")
public class SomeEntity extends Entity {

@ColumnInfo(name = "type", typeAffinity = ColumnInfo.TEXT)
private String mType;

@ColumnInfo(name = "timestamp", typeAffinity = ColumnInfo.INTEGER)
private long mTimestamp;

// constructor, accessors
}

当我尝试编译我的项目时,它失败了,没有特定的错误。

如果我尝试使用平面实体层次结构对其进行编译,一切都很好。

所以,我的主要问题是:
Room 是否支持实体继承?是否能够从父 Entity 获取列定义?类(class)?

我也想知道是否延长 BaseObservable (我需要让数据绑定(bind)工作)会导致 Room 出现问题? BaseObservable有一个私有(private) transient 字段,所以这可能会导致代码生成出现一些问题。

是否有任何推荐的模式来处理这个问题,或者我只需要展平我的实体层次结构?

最佳答案

经过进一步调查,事实证明房间实体不应扩展 BaseObservable类(class)。它包含无法用 @Ignore 标记的字段并打破代码生成。

房间很适合继承。注释按预期处理,数据库操作正常。您可以从实体和 POJO 扩展。

关于android-room - Room 是否支持实体继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46317047/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com