使用Objectify可以查询对象的子节点。对象也可以具有null父级。
Parent parent;
List<Children> children = ofy().query(Children.class).ancestor(parent).list();
我想知道的是,如果我可以查询null父项?所以我想知道所有有空父母的孩子。如果我在上面传递null,我会得到一个异常。
使用null propValue创建属性的查询也不会返回任何内容。
Query<T> q = ofy().query(clazz);
q.filter(propName, propValue);
return q.list();
答案 0 :(得分:3)
如果将null传入ancestor()会从GAE代码中抛出异常(我相信它会这样做),那么是的,这是appengine的限制。
请注意,Query对象是不可变的,因此在第二个示例中,filter()调用无效。您必须重新分配q变量:
q = q.filter(...
在回答如何使用空父项获取所有实体时,可以使用键上的不等式过滤器来执行此操作:
Key<Parent> firstParent = Key.create(Parent.class, 1L); // first possible parent value
List<Children> children = ofy().query(Children.class).filterKey("<", firstParent).list();