简体   繁体   English

GAE / J数据存储区:如何使用JDO构建IN查询

[英]GAE/J datastore : how to build an IN query with JDO

I am trying to query a collection of entities by its key in the Google App Engine datastore. 我正在尝试通过Google App Engine数据存储区中的键查询实体集合。 This is the query I am trying to execute with no success: 这是我尝试执行的查询,但没有成功:

Query query = pm.newQuery(Fix.class);
query.setFilter("__key__ IN param");
query.declareParameters("com.google.appengine.api.datastore.Key param");
query.execute(list); // list is an array of keys

And the error I get is: 我得到的错误是:

javax.jdo.JDOUserException: Portion of expression could not be parsed: IN param

Is it possible to use build an IN query with JDO or the low level API that finds entities by key? 是否可以通过JDO或通过密钥查找实体的低级API使用构建IN查询?

I think you might be confusing the JDO and JPA syntax: see examples on this page 我想你可能会混淆了JDO和JPA语法:见例子

JPA: JPA:

select from Person where
    favoriteFood IN ('cheeseburger', 'pizza', 'fried chicken')
    order by favoriteFood, age

JDO: JDO:

Query q = pm.newQuery(
    "select from Person where :p1.contains(favoriteFood) order by favoriteFood, age");
q.execute(Arrays.asList("cheeseburger", "pizza", "fried chicken"));

Have you tried examples from this page ? 您是否尝试过此页面中的示例? Something like: 就像是:

query.addFilter("__key__", Query.FilterOperator.IN, param);

Note that param should be a list. 请注意, param应该是一个列表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM