我有两个RealmObject类,NodeToUser和Task:
class NodeToUser extends RealmObject {
int id;
Task task;
String otherStuff;
}
class Task extends RealmObject {
int id;
String name;
}
现在,我想要所有的任务,其中NodeToUser.otherStuff ==“foo”。
我想出的就是在NodeToUser上执行查询,如下所示:
RealmResults<NodeToUser> nodes = realm.where(NodeToUser.class)
.equalTo("otherStuff", "foo")
.findAll();
然后检查结果并收集实际的任务。
List<Task> tasks = new ArrayList<>();
for (NodeToUser n : nodes) tasks.add(n.getTask());
然而,这个迭代结果并收集我真正想要的对象非常慢 - 只是一个粗略的值: 100个NodeToUser对象需要2秒在我的设备上。
问题:是否有更好/更快的方式或某种方式来创建查询,以便我可以直接获取任务列表?
答案 0 :(得分:1)
class NodeToUser extends RealmObject {
int id;
Task task;
String otherStuff;
}
class Task extends RealmObject {
int id;
String name;
@LinkingObjects("task")
private final RealmResults<NodeToUser> fromNodes = null;
}
然后
RealmResults<Task> tasks = realm.where(Task.class)
.equalTo("fromNodes.otherStuff", "foo")
.findAll();