[英]Objectify - all children of a given Parent
我正在使用objectify和Google Cloud數據存儲。
我正在尋找一種方法來讓所有孩子(沒有特定的類型或種類)成為父母。
我知道祖先的功能。
我用這個
ofy().load().ancestor(entity).list();
這給所有的孩子和孫子們(我不想要)。
在這個例子中,A是1、2和3的父代。1是m的父代
A / | \ 1 2 3 | m
我想要{1,2,3}而不是{1,2,3,m}的數據
您知道獲得更准確結果的方法嗎? (沒有孫子)
沒有@Parent
解決方案,我懷疑您在濫用@Parent
。 想要在數據存儲區中創建grand @ Parent關系應該非常非常少。 數據存儲中的大多數分層關系最好用傳統的外鍵關系表示。
但是,如果確定,一種解決方案是使1、2和3成為同一共同種類的所有多態對象。 因此,您可以像這樣查詢:
ofy().load().type(BaseType.class).ancestor(parent)
使用查詢類型的另一個優點是,您現在可以應用過濾器(無類型查詢不能具有過濾器):
ofy().load().type(BaseType.class).ancestor(parent).filter("arbitraryField", value)
如果您希望排除的值很少,另一種選擇是無論如何都要獲取它們並過濾掉它們。
我認為唯一的方法是創建索引並在父屬性上使用過濾器 。 @parent會將父鍵添加為子鍵的一部分,因此從本質上講,您將獲得所有后代,除了過濾類型之外,沒有其他簡單的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.