Контекст: изолироватьМестоположение и Восприимчивость (1-много) имеют отношение один ко многим, а также Лекарственное средство и Восприимчивость (1-много). Все они являются RealmObjects и IsolateLocation, а также Drug содержат RealmList of Susceptibilities. Восприимчивость создается для всех препаратов в каждом месте локализации, затем эта восприимчивость добавляется в соответствующий список восприимчивости изолятаМестоположение и список восприимчивости к лекарствам.
Проблема: первый объект Susceptibility правильно добавляется в списки в обеих моделях (Drug и IsolateLocation), но следующий созданный объект Susceptibility правильно добавляется в модель Drug сразу после его добавления в модель Susceptibility. list предыдущая запись в списке IsolateLocation Susceptibility удаляется. Таким образом, в конце чувствительность к лекарственным препаратам верна с несколькими восприимчивостями, но список восприимчивости IsolateLocation имеет только 1.
Необработанные данные: https://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();
}