I have a Many to Many relationship set up on my Room database denoted by the following diagram:
我想向“CrossRef”表添加额外的字段。我的问题是如何让 DateWithSteaks 从“CrossRef”表中获取这个“isCompleted”变量?
@Entity
public class Steak{
@PrimaryKey(autoGenerate = true)
public int id;
public String title;
}
@Entity
public class Date {
@PrimaryKey
public long date;
public Date() {
date = new LocalDate().toDate().getTime();
}
}
@Entity(primaryKeys = {"date", "id"})
public class DateSteakCrossRef {
public long date;
public int id;
public boolean isCompleted;
}
public class DateWithSteaks {
@Embedded Date date;
@Relation(
parentColumn = "date",
entityColumn = "id",
associateBy = @Junction(DateSteakCrossRef.class)
)
public List<Steak> steaks;
}
我遇到了同样的问题,不可能以直观的方式解决。
我得到的最接近的解决方案是添加交叉引用实体(在您的示例中DateSteakCrossRef
) 作为结果对象内的一对多关系 (DateWithSteaks
).
不是最好的事情,但至少你可以在一次事务中获取所有数据。
像这样的事情:
public class DateWithSteaks {
@Embedded Date date;
@Relation(
parentColumn = "date",
entityColumn = "id",
associateBy = @Junction(DateSteakCrossRef.class)
)
public List<Steak> steaks;
@Relation(
parentColumn = "id", // id of your Date clase
entityColumn = "id" // id of your DateSteakCrossRef class
)
public List<DateSteakCrossRef> steaksRefs;
}
然后,在您的代码中,您需要匹配steaks
and steaksRefs
使用您需要的数据映射到另一个对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)