2012-12-06 104 views
2

通過Objectify可以查詢對象的子對象。一個對象也可以有一個空的父對象。列出空父母的子女?

Parent parent; 
List<Children> children = ofy().query(Children.class).ancestor(parent).list(); 

我想知道的是,如果我可以查詢空的父親?所以我想知道所有有空父母的孩子。如果我在上面傳遞null,我會得到一個異常。

也通過屬性創建查詢與一個null propValue不會返回任何內容。

Query<T> q = ofy().query(clazz); 
    q.filter(propName, propValue); 
    return q.list(); 

回答

2

如果傳遞null到祖先()拋出從GAE代碼的異常(我相信它),然後是的,這是AppEngine上的限制。

請注意,Query對象是不可變的,所以在第二個示例中,filter()調用沒有效果。你必須重新分配將q變量:

q = q.filter(... 

在回答如何讓所有實體與一個null父,你可以用在關鍵的不等式過濾器做到這一點:

Key<Parent> firstParent = Key.create(Parent.class, 1L); // first possible parent value 
List<Children> children = ofy().query(Children.class).filterKey("<", firstParent).list(); 
+0

真棒!謝謝! –

+0

等..我錯過了這裏有什麼現在filterKey? –

+0

由於您使用的是ofy(),我認爲您使用的是Objectify4,它具有filterKey()。 – stickfigure