【问题标题】:Objectify - get all of a type regardless of parentObjectify - 获取所有类型,而不考虑父级
【发布时间】:2018-02-17 05:02:45
【问题描述】:

我有带有@Parent key ref 的子实体。

当我给出父键时,我可以像这样得到子实体:

OfyService.ofy()
            .load()
            .type(Child.class)
            .parent(parentKey)
            .id(childId).now();

我尝试直接访问子实体而不提供父键,但这不起作用(返回 null):

OfyService.ofy()
            .load()
            .type(Child.class)
            .id(childId).now();

是否有另一种方法可以查询一个类型的一个或所有实例而不考虑父级?

例如,_ah/admin 能够列出 Kind 的所有实体,而不管其父级如何。

【问题讨论】:

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


    【解决方案1】:
    Iterable<Child> children = ofy().load().type(Child.class);
    

    【讨论】:

    • 如果我用父级定义实体,则查询仅在我像第一个代码示例中那样再次设置父级(par)时才有效。
    • 查询有效。您可能会看到最终一致性的结果。通过 parent()/id() 加载是 load-by-key 的简写,具有很强的一致性。获取所有实体是对始终最终一致的索引(在本例中为键索引)的查询。
    • 如果您在测试用例中执行此操作,最好的办法是关闭测试中的最终一致性。数据存储帮助器上有一个名为 setApplyAllJobRepPolicy() 的方法
    • 感谢您的澄清。我第一次处理最终的一致性。 .. 它比异步更棘手,因为使用异步,至少我在它准备好时会收到一个回调。
    • @Teddy 如果对你有用,你能接受答案吗?
    猜你喜欢
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    相关资源
    最近更新 更多