JPQL (JPA) поиск подстроки
Im сталкивается с простой проблемой поиска сущностей по некоторой (sub)строке, которую они могут содержать.
например. У меня есть пользователи user1, usr2, useeeer3, user4, и я войду в окно поиска "использовать", и я ожидаю вернуть user1, useeer3, user4.
Я уверен, вы знаете, что я имею в виду. Есть ли какая-либо конструкция в JPA (JQPL)? Было бы неплохо искать, используя WHERE как-то в именованных запросах. Что-то вроде "выберите u из пользователя u, где u.ник содержит : подстрока"
1 ответов
использовать LIKE
выражение. Вот цитата из раздела 4.6.9 Как Выражение спецификации JPA 1.0 (JSR 220):
синтаксис для использования оператор сравнения
[NOT] LIKE
в a условное выражение выглядит следующим образом:string_expression [NOT] LIKE pattern_value [ESCAPE escape_character]
string_expression должен иметь строковое значение. The
pattern_value
- это строковый литерал или строковое значение входной параметр, в котором символ подчеркивания ( _ ) означает любой отдельный символ, a процента (%) означает последовательность символов (включая пустая последовательность), и все остальные персонажи стоят за себя. Этот дополнительный escape_character это одно-символьный строковый литерал или символьный входной параметр (т. е.char
илиCharacter
) и используется, чтобы избежать особого значения символы подчеркивания и процента вpattern_value
.пример:
- адрес.телефон как ‘12% 3’ верно для ‘123’ ‘12993’ и false для ‘1234’
- asentence.слово как "l_se" верно для "потерять’ и ложно для "потерять"
- слово.подчеркнуто как '\ _ % 'ESCAPE' \ 'верно для' _foo ' и false для 'bar'
- адрес.телефон не похоже, что "12% 3" ложно для " 123 " и "12993" и true для ‘1234’
если значение в
string_expression
илиpattern_value
естьNULL
или неизвестно, значение Как выражение неизвестно. Если иNULL
значение как выражение неизвестно.