0

假设我在 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引用特定的 s Project

我试过了

    Query q = new Query("Task");
    Query.FilterPredicate projectFilter =
            new Query.FilterPredicate("project",
                    Query.FilterOperator.EQUAL,
                    project.getKey()
                    );
    q.setFilter(projectFilter);

但无济于事。我已经使用 Datastore 查看器检查了实际数据,并且一切就绪。 Tasks 有Key一个项目的属性,并且所有属性都被索引。

唯一看起来不寻常的是(考虑到我的应用程序支持多租户),该Project键作为查看器上的命名空间前缀这一事实。

这可能是问题所在,有什么解决办法吗?

提前谢谢了。

4

1 回答 1

1

尝试project.getKey().getId()改用,

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

此处描述:

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

于 2012-12-03T13:35:52.227 回答