gpt4 book ai didi

Android Room - 带有附加字段的多对多关系

转载 作者:行者123 更新时间:2023-12-04 07:47:02 25 4
gpt4 key购买 nike

我在 Room 数据库上设置了多对多关系,如下图所示:
enter image description here
我想在“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;
}
然后,在您的代码中,您需要匹配 steakssteaksRefs用您需要的数据映射到另一个对象。

关于Android Room - 带有附加字段的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67155157/

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