Что означает «: P» в запросе JDO - PullRequest
3 голосов
/ 13 августа 2010

Я использую JDO на Google App Engine.У каждого «сотрудника» есть «ключ».У меня есть набор ключей, и я хочу получить всех сотрудников, чей ключ принадлежит этому набору.

Поэтому я реализовал его, используя фильтр 'contains ()', как указано здесь .Код работает нормально и выглядит так -

List<Key> keys = getLookupKeys(....) ..//Get keys from somewhere.

Query query = pm.newQuery(Employee.class,":p.contains(key)"); //What is ":P" here?
List<Employee> employees = (List<Employee>) q.execute(keys); //This correctly gives me all I want

Все, что мне интересно, это что такое ": P" в этом запросе?У объекта Employee нет ни одного поля с именем 'p', и мой запрос не объявляет такой параметр.Так на что же указывает это «р»?Имеет ли «р» какое-то особое значение?

1 Ответ

5 голосов
/ 13 августа 2010

Я считаю, что это отображение неявного входного параметра. Поскольку есть только один параметр, вам не нужно явно вызывать setParameter, вы можете просто использовать его. Я верю, что было бы хорошо, как:

Query query = pm.newQuery(Employee.class,":keys.contains(key)");
List<Employee> employees = (List<Employee>) q.execute(keys); 

что может быть понятнее.

См. Часть "неявных параметров" документов Apache JDOQL для другого примера.

...