XML. Параметр or в фильтрах datasource

Здравствуйте.
Пытаюсь выполнить запрос с использованием параметра . Однако на подобный вызов программа возвращает пустой результат:

Снимок

Если же одно из условий убрать:

Снимок3

То всё работает правильно и возвращается необходимая часть результата. Так вот, почему первый фильтр возвращает пустой ответ?

Могу только предположить, что, возможно, один и тот же параметр использовать можно только один раз.
upd:

Условия и предложения добавляются в итоговый запрос, только если присутствующие внутри них параметры получили значения, т.е. не равны null.

Если мое предположение верно и параметр используется один раз, то как раз получается, что вся секция не формируется.
Попробуйте передавать те же id во второй параметр (ids2).

Аналогично возвращается пустой результат. Версия CUBA: 6.6.2

Снимок
______________________________________________________________.
Снимок2

Посмотрите какой SQL выполняется в итоге. Для этого надо установить в DEBUG логгер eclipselink.sql:

image

Вот ответ для обоих случаев
Снимок

Это JPQL. Какой выполняется SQL? Вы можете взять его из лога, попробовать выполнить во внешнем инструменте, и тогда скорее всего станет понятно что там не так.

SQL-запросов нет в логах. Там только JPQL запросы

SQL запросы будут выводиться в app.log если вы установите уровень DEBUG логгеру eclipselink.sql как я писал выше.

Да, я проверил запрос по вашей инструкции, он действительно не возвращает ничего.
Вот как выглядел исходный запрос:

Исходный запрос

Я его немного подправил, чтоб он возвращал верные результаты:

Рабочий запрос

  1. Убрал не используемую таблицу, с ней запрос уходит в бесконечное выполнение
  2. расположил вторую проверку рядом с первой и оператор заменил на OR
  3. в запросе все t3 заменил на t2

Можно как-то это использовать для решения моей проблемы?

Здравствуйте,

По-умолчанию e.address.area и e.address.city преобразуются к inner join в sql. Изменить данное поведение возможно указав явно left join для jpql в условии фильтрации (https://doc.cuba-platform.com/manual-6.8/datasource_query_filter.html).
<c join='left join e.address.city c'>c.aoid in :custom$ids2</c>

4 симпатии