以下是有孩子的样本父母
Parent[0].Children[0].Name = Johnson
Parent[0].Children[0].Age = 16
Parent[0].Children[1].Name = Jessica
Parent[0].Children[1].Age = 17
Parent[1].Children[0].Name = Lawson
Parent[1].Children[0].Age = 17
Parent[1].Children[1].Name = Jessica
Parent[1].Children[1].Age = 19
我只是想让父母带着孩子名字Jessica& 17岁
当我尝试
时realm.where(Parent.class).beginGroup().equalTo("childrens.name","Jessica").equalTo("childrens.age","17").endGroup().findAll();
它让父母双方都归于我,因为第二位父母有17岁及以下的孩子。名叫杰西卡。我怎样才能得到第一个父母?
答案 0 :(得分:0)
链接查询意味着"至少有一个X条件为真"
所以你的查询
realm.where(Parent.class)
.beginGroup()
.equalTo("childrens.name","Jessica")
.equalTo("childrens.age","17")
.endGroup()
.findAll();
说,
"给我父母的父母至少有一个名字是杰西卡的孩子,并且至少有一个孩子年龄在17岁和34岁;
父母1和父母2,因为他们都有一个名叫杰西卡的孩子,他们都有一个17岁的孩子。
你可以做两件事:
1。)
realm.where(Parent.class)
.equalTo("childrens.name","Jessica")
.findAll()
.where()
.equalTo("childrens.age","17")
.findAll();
2。)在儿童中,定义@LinkingObjects
public class Child extends RealmObject {
@LinkingObjects("children")
private final RealmResults<Parent> parents = null;
}
现在你可以根据孩子进行检查了:
RealmResults<Child> children = realm.where(Child.class).equalTo("name", "Jessica").equalTo("age", 17).findAll();
Child child = children.get(0);
RealmResults<Parent> parents = child.getParents(); // <-- parents of "Jessica, 17"
答案 1 :(得分:0)
使用hacky方式解决。
为孩子创建一个唯一的密钥,例如
Parent[0].Children[0].UniqueKey = name + "_" + age
并查询唯一键。