java - 子级的领域java链查询
问题描述
这是有孩子的父母样本
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
我只是想得到一个孩子名字杰西卡和 17 岁的父母
当我尝试
realm.where(Parent.class).beginGroup().equalTo("childrens.name","Jessica").equalTo("childrens.age","17").endGroup().findAll();
它把父母双方都还给了我,因为第二位父母有 17 岁的孩子并命名为杰西卡。我怎样才能只得到第一个父母?
解决方案
链接查询意味着“至少有一个 X 条件为真”
所以你的查询
realm.where(Parent.class)
.beginGroup()
.equalTo("childrens.name","Jessica")
.equalTo("childrens.age","17")
.endGroup()
.findAll();
说,
“给我父母,父母至少有一个孩子的名字叫杰西卡,并且至少有一个孩子的年龄是 17 岁”
即父母 1 和父母 2,因为他们都有一个叫 Jessica 的孩子,而且他们都有一个 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"
推荐阅读
- python - 连接多个 Pandas 数据帧时出现内存错误
- java - 如何使用返回 Mono 的数据库调用对 Flux 中的每个对象进行连接
- c++ - 在 Solaris 11 DeveloperStudio12.6 中使用重载 = 运算符进行转换失败
- r - 分析数据框列表中的数据框并将所有结果存储在单个数据框中
- arrays - int *arr[] 如何是指向 int 的指针数组,但 char *arr[] 是指向字符串的指针数组?
- oracle - 在加载数据之前如何估计我需要的 oracle 表空间?
- python - 如何用 matplotlib.image.AxesImage 对象制作 matplotlib funcanimation 动画?
- machine-learning - 机器学习相关性
- unit-testing - 运行 php 单元测试时在 null 上调用成员函数 extension()
- function - 网站代码与 Excel Vlookup 功能相同