public RealmList<CategoriesDto> getListOfCategories(String type){
final RealmList<CategoriesDto> listOfCategories = new RealmList<>();
final CategoriesDto categoriesDto = realm.where(CategoriesDto.class).equalTo("identifier", type).findFirst();
if (categoriesDto != null) {
realm.beginTransaction();
RealmResults<CategoriesDto> categories = realm.where(CategoriesDto.class).equalTo("parentId", categoriesDto.getCategoryId()).findAll();
for (int i = 0; i < categories.size(); i++) {
listOfCategories.add(categories.get(i));
}
// realm.commitTransaction();
}
return listOfCategories;
}
Ich Abfrage Reich zweimal in einem Verfahren, und diesen Fehler habe ich versucht, realm.beginTransaction()
und realm.commitTransaction()
nach jeder Abfrage.java.lang.IllegalStateException: Verschachtelte Transaktionen sind nicht zulässig. Verwenden Sie commitTransaction() nach jeder begintransaction()
Eine weitere Sache: Diese Abfrage liest nur Daten aus Realm db.
Um Daten in einer Datenbank zu schreiben, verwenden wir im Allgemeinen Commit, um Daten persistieren.
Ich habe versucht realm.commitTransaction()
auch, aber ich bekomme den gleichen Fehler.
Ich weiß nichts über Realm. Ist es wirklich erforderlich, beginTransaction() vor der Leseabfrage aufzurufen? –
Ja, wenn Sie nicht angerufen haben, stürzt die Anwendung ab und der Fehler ist "Sie müssen reaml.beginTransactio() aufrufen" – user3449611
Haben Sie versucht, 'beginTransaction' und' commitTransaction' in for for loop hinzuzufügen? –