簡體   English   中英

對象化-給定父母的所有孩子

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM