Objectify查询不适用于祖先

时间:2014-10-16 06:56:40

标签: 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);

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

1 个答案:

答案 0 :(得分:1)

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