Ответ 1
В HQL нет эквивалентной функциональности ilike
. Как уже указывал Константин в своем , ваш лучший выбор - настроить соединение с базой данных и установите collation на TERRITORY_BASED:SECONDARY
, как описано в этой JIRA: DERBY-1748: глобальная чувствительность к регистру.
Учтите, что все равенства (=
) и like
будут нечувствительны к регистру. Это может зайти слишком далеко и не подходит для вашей конкретной ситуации.
Другим способом решения этой проблемы будет создание функциональных индексов (если, конечно, Derby поддерживает их), и настройте свой HQL, чтобы объединить like
и lower
следующим образом.
Query q = session.createQuery("... WHERE lower(entity.field) like ?)");
q.setString(0, '%' + variable.toLowerCase() + '%');
Если Derby не поддерживает FBI (я думаю, что это не так), вы также можете создавать столбцы с триггерным заполнением с более низкими значениями и индексировать их.
UPDATE Кажется, что можно определить столбцы с производными/автогенерированными, как описано в этой другой JIRA: JIRA-481: реализовать столбцы, сгенерированные SQL.