java - 对象化查询不适用于祖先

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

我有一个作为实体存储的 ObjectS 类。在此 ObjectS 中,我通过以下方式将 ObjectP 声明为父对象。

@Parent
@ApiResourceProperty(ignored = AnnotationBoolean.TRUE)
private Key<ObjectP> objectPKey;

然后,我的 api 如下所示,

@ApiMethod(
        name = "getObjectPChildren",
        path = "getObjectPChildren",
        httpMethod = HttpMethod.POST
)
public Collection<ObjectS> getObjectPChildren(@Named("websafeObjectPKey") final String websafeObjectPKey)
         {

    Key<ObjectP> objectPKey = Key.create(websafeObjectPKey);
    Query<ObjectS> q = ofy().load().type(ObjectS.class)
            .ancestor(objectPKey);
    return q.list();
}

当我使用 websafeObjectPKey 创建实体 ObjectS(使用 API 资源管理器中的其他一些 API)时,我可以看到本地数据存储中的实体。但是,上面的查询返回空,这意味着它表示没有实体:-(。有趣的是,如果我将查询修改为以下

Query<ObjectS> q = ofy().load().type(ObjectS.class);

它确实返回数据存储中的所有实体!这意味着数据存储在某种程度上不知道祖先关系。我想知道我做错了什么?

最佳答案

如果对其他人有帮助,我发现我在创建ObjectS(构造函数)时,没有传递ObjectP的正确 key 。修复了它并且现在可以正常工作了!

关于java - 对象化查询不适用于祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26398032/

相关文章:

Java GAME与外部服务器通信,最快的方式

java - 在运行时以自定义方式(反)序列化 Bean

google-app-engine - 祖先查询导致 API 错误 4 (datastore_v3 : NEED_INDEX): no matching index found error

google-app-engine - App Engine 端点 API - 带有自定义域的 404

google-app-engine - 创建数据存储的成本。 key : Storing a key in struct versus an id and fetching from the datastore

google-app-engine - Google Datastore 模拟器从本地数据库中删除数据

java - 如何在缅因州 JFrame 中禁用按钮后从其他 JFrame 启用按钮?

java - java中如何按降序打印结果?

Java如何从关键代码中获取ascii字符

python - Bigtable 还是 Datastore 更适合在线应用程序存储和使用财务数据?