Добрый вечер, столкнулся с проблемой, что jmix выполняет sql-запрос с условием lower, если использовать оператор like. У меня есть поле типа Date, которое я привожу к строке с помощью jpql функции function(‘to_char’, date, format), но в конечном sql-запросе jmix подставляет lower, получается to_char(lower(date), format) и в итоге ошибка. С jpql функцией cast тоже не работает. Как-то можно решить эту проблему? С полем Integer такой проблемы нет.
Поясните пожалуйста какой конкретно запрос вы выполняете и каким образом - через DataManager, из UI с помощью фильтра или может быть как-то по другому?
В дескрипторе.
<c:where>function('to_char', e.setDate, 'DD.MM.YYYY') like :component_filterField</c:where>
Оператор lower раньше выполняется, чем функция to_char, из-за этого ошибка.
Понятно, спасибо.
Действительно в этом случае фреймворк выполняет приведение к нижнему регистру для регистро-независимого поиска, так как обычно этого ожидают пользователи.
Рекомендую вместо использования вложенный условий запроса реализовать ручную модификацию запроса при изменении значения filterField
.
Примеры можно посмотреть здесь:
1 симпатия