Запросы на JDOQL

7 views
Skip to first unread message

Keus

unread,
May 31, 2010, 8:29:21 AM5/31/10
to Google App Engine for Java on Russian
Всем привет.

В документации написано <<В синтаксисе строки JDOQL несколько фильтров
разделяются знаком && (логическое "и"). Другие логические сочетания
фильтров (логическое "или", "нет") не поддерживаются.>>

В связи, с чем у меня вопрос. Как вообще вы обходите данное
ограничение, т.е. отсутствие поддержки <<ИЛИ>>?

Мне, например, необходимо получить объекты, у которых поле может иметь
разные значения, т.е. в обычном языке запросов я бы мог записать это
следующим образом <<поле1 == <<А>> ИЛИ поле1 == <<В>>>>, но GAE этого не
позволяет. Я даже не представляю, как это обойти. Может как-то по
особенному организовать хранение объектов или тупо получать все
объекты, скажем их 1000 штук и перебирать их в цикле, в поисках тех,
что удовлетворяют условиям, а таких объектов из 1000 может оказаться
только 5?

Как вообще все это делают?

Ivan Sopov

unread,
May 31, 2010, 8:59:25 AM5/31/10
to google-appengi...@googlegroups.com
Еще один пример того, что доки на русском очень отличаются от
"каноничных" доков на английском:
An entity must match all filters to be a result. In the JDOQL string
syntax, you can separate multiple filters with || (logical "or") and
&& (logical "and"), although keep in mind that || can only be employed
when the filters it separates all have the same field name. In other
words, || is only legal in situations where the filters it separates
can be combined into a single contains() filter

Мой перевод:
Сущность должна соответствовать всем фильтрам, чтобы попасть в
результат. В строке JDOQL вы можете разделять несколько фильтров
логическим "или" и логическим "и", но при этом следует учитывать, что
логическое "или" возможно только тогда, когда фильтры, которые оно
разделяет, относятся к одному и тому же полю. Другими словами ||
применимо только в ситуациях, когда оно разделяет фильтры, которые
могут быть объединены в один фильтр contains().

Лежит эта дока тут:
http://code.google.com/intl/en/appengine/docs/java/datastore/queriesandindexes.html

Надо бы написать запрос в google, чтобы при обновлении доки автоматом
на всех необновленных переводах ставилась большая надпись "УСТАРЕЛО!"

31 мая 2010 г. 15:29 пользователь Keus <dmiha...@gmail.com> написал:

Keus

unread,
May 31, 2010, 9:19:41 AM5/31/10
to Google App Engine for Java on Russian
Спасибо. Оказывается то, что мне было нужно поддерживается.

П.С. А я то радовался, что есть документация на русском, а она значит
устаревшая.

Ivan Sopov

unread,
May 31, 2010, 9:22:44 AM5/31/10
to google-appengi...@googlegroups.com
Я то это знаю исключительно по рассылкам разным - но для активно
развиваемых сервисов Гугла складывается такое впечатление, что вообще
читать переводную документацию бессмысленно. По ощущению - уже больше
десятка таких случаев видел.

31 мая 2010 г. 16:19 пользователь Keus <dmiha...@gmail.com> написал:

Keus

unread,
May 31, 2010, 10:07:56 AM5/31/10
to Google App Engine for Java on Russian
Специально посмотрел перевод страницы про <<ИЛИ>> на испанском и
португальском, у них тоже устаревшая документация. Я теперь
действительно понимаю, что имеет смысл читать только английскую
документацию.

Хотел задать тут вопрос про запросы к дочерним объектам, а пока
пересматривал английские ресурсы наткнулся на блог где нашел ответ на
этот вопрос. Может кому ещё пригодится: http://gae-java-persistence.blogspot.com/

Reply all
Reply to author
Forward
0 new messages