Контекст: isolateLocation and Subsceptibilities (1-many) имеют отношения от одного до многих, а также наркотики и восприимчивости (1-много). Все объекты RealmObjects и IsolateLocation, а также Drug содержат RealmList of susceptibilities. Восприимчивость создается для всех лекарств в каждом изоляторе. Затем эта восприимчивость добавляется в соответствующий список уязвимости IsolateLocation и список восприимчивости к лекарственным средствам.Строка автоматически удаляется в android RealmDB после добавления новой записи в связанной таблице?
Проблема: Первый объект Восприимчивость правильно добавлен в списки в обеих моделях (Drug & IsolateLocation), но следующий Восприимчивость, который создается корректно добавляется к модели Drug, сразу после добавления его в список Drug Susceptibility , предыдущая запись в списке уязвимости IsolateLocation удаляется. Так, в конце Drug Восприимчивость правильно с несколькими восприимчивостей, но 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();
}
Вы должны добавить элементы в 1 транзакцию, а не N транзакций на элемент N – EpicPandaForce