В источниках данных можно использовать особенность выполнения JPQL-запросов, описанную для интерфейса
Query
уровня Middleware: для удобного формирования условия поиска без учета регистра символов и по любой части строки можно использовать префикс
(?i)
. Однако, в связи с тем, что значение параметра обычно передается неявно, имеются следующие отличия:
-
Префикс
(?i)
нужно указывать не в значении, а перед именем параметра. -
Значение параметра будет автоматически переведено в нижний регистр.
-
Если в значении параметра отсутствуют символы
%
, то они будут добавлены в начало и конец.
Для примера рассмотрим обработку следующего запроса:
select c from sales$Customer c where c.name like :(?i)component$customerNameField
В данном случае значение параметра, взятое из компонента customerNameField
, будет переведено в нижний регистр и обрамлено символами %
, а затем в базе данных будет выполнен SQL запрос с условием вида lower(C.NAME) like ?
Следует иметь в виду, что при таком поиске индекс, созданный в БД по полю NAME
, не используется.