0

使用 Jackson 和 Retrofit,我想friendToMany在反序列化期间设置朋友列表。正如我已经完成的文档一样,我们必须在assignable=true设置时手动将该实体分配给 boxstore。所以,我正在这样做(如代码所示)。此方法仅适用于此代码所属的第一项。它不适用于元素 2 或更远。

@Id(assignable = true)
@JsonProperty("_id")
public long id;

@Transient
private List<Friend> friends = null;

@JsonIgnore
@Backlink(to = "demoResponseToOne")
ToMany<Friend> friendToMany;

@JsonProperty("friends")
public void setFriends(
        List<Friend> friends)
    {
    this.friends = friends;
    for (Friend friend : friends)
        {
        MyApplication.getBoxStore().boxFor(Friend.class).attach(friend);
        friendToMany.add(friend);
        }
    }

抛出的异常是:io.objectbox.exception.DbDetachedException: Cannot resolve relation for detached entities, call box.attach(entity) beforehand.add(friend). 我的意思是当这个 Root 元素是列表的第一项时,这有效。

4

1 回答 1

0

您还需要附加Box<Friend>to this,它拥有ToMany要修改的 :

MyApplication.getBoxStore().boxFor(Friend.class).attach(this);

背景:如果您正在使用,则@Id(assignable = true)需要注意 ObjectBox 通常会为您做的一些事情。这包括Box在修改任何ToMany.

来源: https ://docs.objectbox.io/relations#updating-tomany https://docs.objectbox.io/advanced/object-ids#self-assigned-object-ids

于 2018-12-10T13:57:20.567 回答