上下文: isolateLocation 和 Susceptibilities (1-many) 以及 Drug and Susceptibilities (1-many) 具有一对多的关系。都是 RealmObjects 和 IsolateLocation 以及 Drug 包含 RealmList of Susceptibilities。为每个isolateLocation 中的所有药物创建一个Susceptibility,然后将此Susceptibility 添加到相应的IsolateLocation Susceptibility 列表和Drug Susceptibility 列表中。
问题:第一个 Susceptibility 对象已正确添加到两个模型(Drug & IsolateLocation)中的列表中,但创建的下一个 Susceptibility 对象在将其添加到 Drug Susceptibility 列表后立即正确添加到 Drug模型中,前一个条目在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();
}