[英]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.