我正在使用 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/