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 значение как выражение неизвестно.