首页 > 解决方案 > 对象框:每个关系只允许一个@Backlink

问题描述

将 Objectbox 从版本 2.2 更新到 2.3.4 后,我在构建应用程序时收到以下消息:

错误:[ObjectBox] 'Athlete.shoesRelation' 每个关系只允许一个 @Backlink。删除除一个 @Backlink 之外的所有内容。

代码运动员类:

@Transient @Expose
private List<Club> clubs;
@Transient @Expose
private List<Gear> bikes;
@Transient @Expose
private List<Gear> shoes;

@Backlink @Expose(deserialize = false, serialize = false)
public ToMany<Club> clubsRelation;
@Backlink @Expose(deserialize = false, serialize = false)
public ToMany<Gear> bikesRelation;
@Backlink @Expose(deserialize = false, serialize = false)
public ToMany<Gear> shoesRelation;

代码齿轮类:

@Transient @Expose
private Athlete athlete;
@Expose(deserialize = false, serialize = false)
private ToOne<Athlete> athleteRelation;

为什么我不能反向链接 shoesRelation / 出了什么问题?

标签: objectbox

解决方案


您的 Athlete 课程有两个指向ToOne<Athlete> athleteRelationin 的反向链接Gear

@Backlink
public ToMany<Gear> bikesRelation;
@Backlink
public ToMany<Gear> shoesRelation;

这从未被支持,我们在 2.3.0 中添加了一个明确的检查。 https://github.com/objectbox/objectbox-java/issues/467

要么删除一个 ToMany,要么添加另一个 ToOne,然后将 ToMany 反向链接显式命名为 ToOne 关系:

@Backlink(to = "<TODO>")
public ToMany<Gear> bikesRelation;
@Backlink(to = "athleteRelation")
public ToMany<Gear> shoesRelation;

推荐阅读