Объект ObjectBox Source не имеет идентификатора (должен был быть помещен ранее)
Я получил исключение при попытке вставить новый объект.
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, прежде чем я добавлю в объект?
1 ответ
Решение
Я думаю, что это связано с https://github.com/objectbox/objectbox-java/issues/104.
В сущности, установить отношение к новому простому списку довольно проблематично, поскольку в ObjectBox отсутствует отслеживание изменений, которое доступно в ToMany
учебный класс. Мы посмотрим, как синхронизировать это в следующем выпуске.
Пожалуйста, попробуйте что-то вроде следующего:
toMany.clear();
toMany.addAll(newList);