繁体   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