Хранилище данных GAE / J: как создать запрос IN с помощью JDO - PullRequest
1 голос
/ 09 января 2011

Я пытаюсь запросить коллекцию сущностей по ее ключу в хранилище данных Google App Engine.Это запрос, который я пытаюсь выполнить безуспешно:

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

И я получаю ошибку:

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

Можно ли использовать построение запроса IN с JDO илиAPI низкого уровня, который находит сущности по ключу?

Ответы [ 2 ]

3 голосов
/ 09 января 2011

Я думаю, что вы, возможно, путаете синтаксис JDO и JPA: см. Примеры на этой странице

JPA:

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

СДО:

Query q = pm.newQuery(
    "select from Person where :p1.contains(favoriteFood) order by favoriteFood, age");
q.execute(Arrays.asList("cheeseburger", "pizza", "fried chicken"));
0 голосов
/ 09 января 2011

Вы пробовали примеры с этой страницы ? Что-то вроде:

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

Обратите внимание, что param должен быть списком.

...