如何通过Java GAE中的Reference属性进行过滤?

时间:2012-11-30 21:08:51

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

假设我在GAE Java应用程序中有以下(简化)模型:

Entity project = new Entity("Project")
project.setProperty("name", "test");

Entity task = new Entity("Task");
task.setProperty("name", "test");
task.setProperty("project", project.getKey());

如何获取所有引用特定Task的{​​{1}}?

我试过

Project

但无济于事。 我使用Datastore查看器检查实际数据,一切都已就绪。 Query q = new Query("Task"); Query.FilterPredicate projectFilter = new Query.FilterPredicate("project", Query.FilterOperator.EQUAL, project.getKey() ); q.setFilter(projectFilter); 对项目有适当的Task,并且所有属性都已编入索引。

唯一看似异常的事实是(考虑到我的应用支持多租户),Key键作为查看器上的命名空间前缀。

这可能是问题,是否有任何解决方案?

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

尝试使用project.getKey().getId()代替

或使用特殊密钥过滤器:Entity.KEY_RESERVED_PROPERTY

这里描述:

https://developers.google.com/appengine/docs/java/datastore/queries#Key_Filters