В документации написано <<В синтаксисе строки JDOQL несколько фильтров
разделяются знаком && (логическое "и"). Другие логические сочетания
фильтров (логическое "или", "нет") не поддерживаются.>>
В связи, с чем у меня вопрос. Как вообще вы обходите данное
ограничение, т.е. отсутствие поддержки <<ИЛИ>>?
Мне, например, необходимо получить объекты, у которых поле может иметь
разные значения, т.е. в обычном языке запросов я бы мог записать это
следующим образом <<поле1 == <<А>> ИЛИ поле1 == <<В>>>>, но GAE этого не
позволяет. Я даже не представляю, как это обойти. Может как-то по
особенному организовать хранение объектов или тупо получать все
объекты, скажем их 1000 штук и перебирать их в цикле, в поисках тех,
что удовлетворяют условиям, а таких объектов из 1000 может оказаться
только 5?
Как вообще все это делают?
Мой перевод:
Сущность должна соответствовать всем фильтрам, чтобы попасть в
результат. В строке JDOQL вы можете разделять несколько фильтров
логическим "или" и логическим "и", но при этом следует учитывать, что
логическое "или" возможно только тогда, когда фильтры, которые оно
разделяет, относятся к одному и тому же полю. Другими словами ||
применимо только в ситуациях, когда оно разделяет фильтры, которые
могут быть объединены в один фильтр contains().
Лежит эта дока тут:
http://code.google.com/intl/en/appengine/docs/java/datastore/queriesandindexes.html
Надо бы написать запрос в google, чтобы при обновлении доки автоматом
на всех необновленных переводах ставилась большая надпись "УСТАРЕЛО!"
31 мая 2010 г. 15:29 пользователь Keus <dmiha...@gmail.com> написал:
П.С. А я то радовался, что есть документация на русском, а она значит
устаревшая.
31 мая 2010 г. 16:19 пользователь Keus <dmiha...@gmail.com> написал:
Хотел задать тут вопрос про запросы к дочерним объектам, а пока
пересматривал английские ресурсы наткнулся на блог где нашел ответ на
этот вопрос. Может кому ещё пригодится: http://gae-java-persistence.blogspot.com/