Я Parent
и Child
класс:Realm андроид один ко многим - cannont выборки детей от родителей
public class Parent extends RealmObject {
private String name;
private RealmList<Child> children;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public RealmList<Child> getChildren() {
return children;
}
@Override
public String toString() {
return this.name;
}
}
public class Child extends RealmObject {
private String name;
private Parent parent;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Parent getParent() {
return parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
@Override
public String toString() {
return this.name;
}
}
Теперь я создаю пример данных:
realm.beginTransaction();
realm.deleteAll();
Child child1 = realm.createObject(Child.class);
child1.setName("Bart");
Child child2 = realm.createObject(Child.class);
child2.setName("Lisa");
Child child3 = realm.createObject(Child.class);
child3.setName("Maggie");
Parent parent = realm.createObject(Parent.class);
parent.setName("Homer");
child1.setParent(parent);
child2.setParent(parent);
child3.setParent(parent);
realm.commitTransaction();
Почему я не получаю детей, когда так спрашивать?
Parent homer = realm.where(Parent.class).findFirst();
for(Child child : homer.getChildren()) {
System.out.println(child.toString());
}
Это работает, когда я задаю ребенок к родителю с помощью parent.getChildren().add(child)
. Но это не работает, когда я назначаю родителям детям (например, child.setParent(parent)
). Что я здесь делаю неправильно?
Вы не сделали ничего плохого. С текущим Realm ('v2.3.1') вы должны вызвать' parent.getChildren(). Add (child) 'для вашего прецедента. Но мы реализуем функцию под названием «обратные ссылки», которая упростит ваш вариант использования. См. Https://github.com/realm/realm-java/issues/607 – beeender