ObjectBox Source实体没有ID(应该放在之前)

ObjectBox Source entity has no ID (should have been put before)

我在尝试插入新对象时遇到异常。

Logcat:

java.lang.IllegalStateException: Source entity has no ID (should have been put before)  
at io.objectbox.relation.ToMany.internalCheckApplyToDbRequired(ToMany.java:599)

插入函数:

public static void setSyncData(long contactId, SyncerData syncData) {
    final Box<SyncerData> box = getObjectBoxStore().boxFor(SyncerData.class);
    SyncerData syncerData = box.query().equal(SyncerData_.id, contactId).build().findFirst();
    if (syncerData == null) {
        syncerData = new SyncerData();
        syncerData.setPhoneOrIdKey(ContactData.generateId(Phone.EMPTY, contactId));
    }
    syncerData.setSyncerDetailsToMany(syncData.getSyncerDetailsToMany());
    box.put(syncerData);
}

这是什么意思,我不能在添加到对象之前将新对象放入 ToMany 列表?

我认为这与 https://github.com/objectbox/objectbox-java/issues/104 有关。

本质上设置与新的普通列表的关系有点问题,因为 ObjectBox 缺少更改跟踪,这在 ToManyclass 中可用。我们将在未来的版本中研究如何同步它。

请尝试如下操作:

toMany.clear();
toMany.addAll(newList);