2017-11-12 21 views
0

新しいオブジェクトを挿入しようとしているときに例外が発生しました。ObjectBoxソースエンティティにIDがありません(前に配置しておく必要があります)

Logcat:

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

挿入機能:それは私が私がオブジェクトに追加する前に新しいオブジェクトToManyリストを置くことができないことを、平均何

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); 
} 

答えて

0

https://github.com/objectbox/objectbox-java/issues/104と関連していると思います。

本来、新しいプレーンリストとの関係を設定するには、ObjectBoxには変更トラッキングがありません(ToManyクラスで使用可能)。将来のリリースでそれを同期させる方法を見ていきます。

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

次のようなものを試してみてください

関連する問題