异常:io.objectbox.exception.DbDetachedException即使已附加实体

时间:2018-12-05 10:56:37

标签: java android database jackson2 objectbox

使用杰克逊配合翻新,我想在反序列化期间将朋友列表设置为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元素是列表的第一项时,此方法有效。

1 个答案:

答案 0 :(得分:0)

您还需要将View in metrics附加到Average上,后者拥有要修改的Box<Friend>

this

背景:如果您使用的是ToMany,则需要注意一些ObjectBox通常会为您做的事情。这包括在修改任何MyApplication.getBoxStore().boxFor(Friend.class).attach(this); 之前附加@Id(assignable = true)

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