繁体   English   中英

如何使用实体类扩展房间中的另一个类?

[英]How to use entity class which extends another class in a Room?

我尝试搜索所有内容,但未找到任何解决方案。 一个问题类似,但没有人正确回答。 转到问题,我有一个具有房间实体注释的类,并且同一类扩展了另一个类(即Library类)。 现在,当我运行该项目时,出现类似错误的错误:找不到字段的吸气剂。 当我删除它时,图书馆的超类制作问题就可以了。 请告诉我我该如何扩展子类作为扩展超类的实体的空间。 感谢您的时间。

    @Entity(tableName = "event")
public class EventDetails extends ParentEntity implements Parcelable{

    @PrimaryKey(autoGenerate = true)
    int id;

    String name;
    Calendar startDay = Calendar.getInstance();
    Calendar endDay = Calendar.getInstance();

public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Calendar getStartDay() {
        return startDay;
    }

    public void setStartDay(Calendar startDay) {
        this.startDay = startDay;
    }

    public Calendar getEndDay() {
        return endDay;
    }

    public void setEndDay(Calendar endDay) {
        this.endDay = endDay;
    }

public void setName(String name) {
        this.name = name;
    }

    @Override
    public String getName() {
        return name;
    }
}



public class ParentEntity {
    private Calendar mDay;


    public Calendar getmDay() {
        return mDay;
    }

    public void setmDay(Calendar mDay) {
        this.mDay = mDay;
    }

}

这似乎主要是一个命名问题:将字段名从mDay更改day并相应地重命名setter / getter之后,所有内容都会编译。

看起来Android Studio从mDay生成的方法名称不是Room正在寻找的方法名称。

由于您可以在父类中使用不同的字段名称,因此这似乎是最佳解决方案。

如果无法更改库,则特别不可能使用Ignore标记库类中的字段,因此无法通过在继承层次结构中插入中间类来解决此问题。 (我尝试使用带有私有字段作为参数的EventDetails的构造函数,但这也不起作用)

因此,在这种情况下,我认为您最好的选择是不要尝试从库类扩展(但可能从某个“代理父”类扩展),并在某些工厂类的帮助下缩小与库类的差距。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM