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 缺少更改跟踪,这在 ToMany
class 中可用。我们将在未来的版本中研究如何同步它。
请尝试如下操作:
toMany.clear();
toMany.addAll(newList);
我在尝试插入新对象时遇到异常。
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 缺少更改跟踪,这在 ToMany
class 中可用。我们将在未来的版本中研究如何同步它。
请尝试如下操作:
toMany.clear();
toMany.addAll(newList);