2011-08-03 30 views
1

我试图编写一个查询来识别并返回所有根实体(即没有祖先的实体)。最初我打过电话Query.setAncestor(null)但后来从datastore Query docs发现,这不起作用:我如何查询App Engine DataStore中的根实体(Java)

传递null作为参数传递给Query.setAncestor(字符串祖先)没有祖先不会查询实体(这种类型的查询目前不支持)。

所以,现在我有点卡住了,因为查询API包含的内容我无法弄清楚如何构造一个查询来标识所有根实体。

这必须是应用程序的功能,所以我正在寻找这编程工作,而不是一些人工干预wnich要求我登录到管理控制台,然后点击一个按钮:-)

任何人都知道一个解决方案这个怎么做?

干杯,

埃德

回答

1

您将需要一个属性添加到您的模型,你可以查询。也许是一个名为is_root或类似的布尔值。

+0

感谢罗伯特,这似乎是明智的。我曾想知道是否应该创建一个特殊的_root_祖先并将其设置为根实体,但我认为您的建议要简单得多,并且不会混淆实体的祖先/路径。干杯。 –

0

正如文档所指出的,没有办法做到这一点 - 除了像@罗伯特所建议的那样解决它。如果你告诉我们你想达到的目标 - 而不是你想如何实现目标 - 或许我们可以提供一个关于如何最好地实现目标的建议。

+0

嗨,尼克,道歉,如果这是不明确的最初的帖子 - 我以为我已经明确指出我想实现什么,而没有任何如何:-)重新尝试我想要实现的:我试图获取应用程序数据存储区中所有根级别实体的列表。无论如何,正如你所说@罗伯特的答案在这里是适当的,应该为我的目的服务于此。谢谢。 –

+0

@Edd我的意思是,你到底在做什么?如果您正在尝试执行此类查询,则表明您的数据模型可能并不理想,并且我们可能会提出一种替代方法来建模效果更好的数据。 –

+0

@NickJohnson我很喜欢这样的建议。我的结构是这样的,我拥有代表社区标签/标签的'Tag'根级实体和'UserTag'的父类是用户(自定义实体,而不是真正的'用户'对象)的子类。我想查询所有社区标签,并且不希望将它们放在同一个实体组中,因为许多用户可能会同时添加/编辑标签。对于如何构建数据存储数据的任何建议以及关于进一步阅读的任何建议,概念性地构建数据存储数据一般都将受到极大的赞赏。 – willlma

相关问题