java - 对象化 - 给定父级的所有子级

标签 java objectify google-cloud-datastore

我正在使用 objectify 和 Google 云数据存储。

我正在寻找一种方法来获取 parent 的所有 child (没有特定类型或种类)。

我知道祖先函数。

我用过这个

ofy().load().ancestor(entity).list();

这给了所有的子孙(我不想要它)。

在此示例中,A 是 1、2 和 3 的父级。 1 是 m 的父级

   A
 / | \
1  2  3
|     
m     

我想要 {1 ,2 ,3} 的数据,而不是 {1 ,2 ,3, m }

您知道如何获得更准确的结果吗? (没有孙子)

最佳答案

对此没有优雅的解决方案,我怀疑您正在滥用@Parent。在数据存储中创建grand@Parent关系的情况应该非常非常罕见。数据存储中的大多数层次关系最好用传统的外键关系来表示。

但是,如果您下定决心,一种解决方案是使 1、2 和 3 成为同一公共(public)类型的所有多态对象。那么你可以这样查询:

ofy().load().type(BaseType.class).ancestor(parent)

拥有查询类型的另一个优点是您现在可以应用过滤器(无类查询不能有过滤器):

ofy().load().type(BaseType.class).ancestor(parent).filter("arbitraryField", value)

如果您希望排除的值很少见,另一种选择是无论如何都获取它们并将其过滤掉。

关于java - 对象化 - 给定父级的所有子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34181036/

相关文章:

java - 将 Spring 属性占位符与 Jersey @Path 和 @ApplicationPath 一起使用

java - 使用 Objectify 将父项/子项批量存储到 Appengine 上

java - Objectify 无法保存@Embedded 字符串列表

java - GAE - Java - 执行查询过滤器的最佳方法 "LIKE"

java - 随机数组生成器中的错误

java - 无法在操作栏中设置 Android 抽屉导航

typescript - 执行指定命名空间的 GCP 查询

google-app-engine - 寻找 Google App Engine 的非规范化建议

java - Java的BST ZoneId代表什么?

java - Objectify 如何存储同名对象