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