【问题标题】:How can I query for root entities in the App Engine DataStore (Java)如何在 App Engine DataStore (Java) 中查询根实体
【发布时间】:2011-08-04 09:48:22
【问题描述】:

我正在尝试编写一个查询,该查询将识别并返回所有根实体(即没有祖先的实体)。我最初尝试调用Query.setAncestor(null),但后来从datastore Query docs 发现这不起作用:

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

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

这需要是应用程序功能,所以我正在寻找一种以编程方式工作的解决方案,而不是一些手动干预,因为我需要登录到管理控制台并单击一个按钮 :-)

有人知道怎么做吗?

干杯,

艾德

【问题讨论】:

    标签: java google-app-engine google-cloud-datastore


    【解决方案1】:

    您需要向模型中添加一个可以查询的属性。可能是一个名为 is_root 或类似名称的布尔值。

    【讨论】:

    • 谢谢罗伯特,这似乎很明智。我想知道是否应该创建一个特殊的 root 祖先并将其设置为根实体,但我认为您的建议要简单得多,并且不会弄乱实体的祖先/路径。干杯。
    【解决方案2】:

    正如文档所示,没有办法做到这一点 - 除了按照@Robert 的建议解决它。如果您告诉我们您想要实现的目标 - 而不是您想要实现的目标 - 也许我们可以就如何最好地实现它提供建议。

    【讨论】:

    • 嗨,尼克,如果在最初的帖子中不清楚,我深表歉意 - 我想我已经明确指定了我想要实现的目标,而没有任何方法 :-) 重申我的目标我正在尝试实现:我正在尝试获取我的应用程序数据存储区中所有根级实体的列表。无论如何,正如您提到的@Robert 的回答在这里是合适的,应该符合我的目的。谢谢。
    • @Edd 我的意思是,你这样做的目的是什么?如果您尝试执行此类查询,则表明您的数据模型可能并不理想,我们或许可以建议一种替代方法来更好地为您的数据建模。
    • @NickJohnson 我喜欢这样的建议。我的结构是这样的,我有代表社区标签/标签的Tag 根级实体和UserTag 的子类,其父级是用户(自定义实体,而不是真正的User 对象)。我想查询所有社区标签,并且不想将它们放在同一个实体组中,因为许多用户可能同时添加/编辑标签。任何关于如何构建它的建议以及任何关于进一步阅读概念性地构建数据存储数据的建议都将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多