Объект 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);
Другие вопросы по тегам