我有一个作为实体存储的 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/