コンテキスト: isolateLocation と Susceptibilities (1-多) には、Drug と Susceptibilities (1-多) と同様に 1 対多の関係があります。すべてがRealmObjectsおよびIsolateLocationであり、Drugには感受性のRealmListが含まれています。すべての isolateLocation のすべての薬物に対して感受性が作成され、この感受性が対応する IsolateLocation 感受性リストおよび薬物感受性リストに追加されます。
問題:最初の感受性オブジェクトは両方のモデル (Drug & IsolateLocation) のリストに正しく追加されますが、作成される次の感受性は、それを薬物感受性リストに追加した直後に、薬物モデルに正しく追加されます。 IsolateLocation 感受性リストが削除されました。したがって、最後に、薬物感受性は複数の感受性で正しいですが、IsolateLocation 感受性リストには 1 つしかありません。
生データ: http://imgur.com/a/iTPY8
コード:
for (Drug drug : drugList){
Susceptibility susceptibility = new Susceptibility();
susceptibility.setId(UUID.randomUUID().toString());
susceptibility.setDrug(drug);
susceptibility.setReference(parsedCsv[drug.getId()+1]);
susceptibility.setSusceptibilityValue(parsedCsv[drug.getId()]);
susceptibility.setIsolateLocation(isolateLocation);
addSusceptibilityToRealm(isolateLocation, drug, susceptibility);
}
private void addSusceptibilityToRealm(IsolateLocation isolateLocation, Drug drug, Susceptibility susceptibility) {
realm.beginTransaction();
Drug drugEntry = realm.where(Drug.class).equalTo("id", drug.getId()).findFirst();
drugEntry.getSusceptibilities().add(susceptibility);
IsolateLocation isolateLocationEntry = realm.where(IsolateLocation.class).equalTo("id", isolateLocation.getId()).findFirst();
isolateLocationEntry.getSusceptibilities().add(susceptibility);
realm.commitTransaction();
}