java - 应用程序引擎查询按 'id' 范围的实体进行过滤,忽略祖先

标签 java google-app-engine

我有这样的实体:

实体[产品(147)]
实体[制造商(23)/产品(131)]
实体[制造商(17)/产品(131)]

现在,我尝试使用查询来查找 ID 为 100 及以上的“产品”类型的所有实体。比如上面的 147 和 131。

问题是我不知道如何请求这些,在查询中将祖先与其“分离”。

尝试过这些:

不工作:

SELECT __key__ FROM products WHERE ID >= 100

部分工作:

SELECT __key__ FROM products WHERE __key__ >= 100

这是我插入查询过滤器的方式:

query.addFilter("__key__", FilterOperator.GREATER_THAN_OR_EQUAL, KeyFactory.createKey("products", 100));

这个部分工作的实体只为“根”实体(即没有祖先的实体)提供正确的结果。

有什么方法可以修改它,使其忽略祖先吗?谢谢!

最佳答案

没有内置方法可以执行此操作,因为此查询毫无意义。 ID 的分配使得它们对于给定种类和父是唯一的。如果实体可能具有不同的父实体,则不能仅依靠 ID 来唯一标识该实体,因此无论父实体如何,查询一系列 ID 都是毫无意义的。

关于java - 应用程序引擎查询按 'id' 范围的实体进行过滤,忽略祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6974987/

相关文章:

java - 使用请求范围时的线程安全代码

python - 为什么 appengine 数据库键的排序方式与字符串不同

google-app-engine - 使用 appspot.com 作为部分域 cookie

google-app-engine - go -mux,为什么路由没有解析?

java - 如何使用 JPA 更改 GAE 数据存储中一个实体的父实体?

java - Quartz & Spring - 集群但不持久?

java - 插件依赖的Maven依赖管理

java - 具有不同查询参数类型的 Spring REST 端点

java - 一个junit测试用例运行后,是否应该删除与这个测试用例相关的测试数据?

python - “ImportError: No module named sendgrid” 用于 Google App Engine 中的 SendGrid