Я сталкиваюсь с простой проблемой с ищущими объектами немного (sub) строка, которую они могли бы содержать.
Например, у Меня есть пользователи user1, usr2, useeeer3, user4, и я введу в окно поиска "использование", и я ожидаю возвращать user1, useeer3, user4.
Я уверен, что Вы знаете то, что я имею в виду теперь. Есть ли какая-либо конструкция в JPA (JQPL)? Было бы хорошо искать использование ГДЕ так или иначе в именованных запросах. Что-то как "ВЫБОР u ОТ Пользователя u, ГДЕ u.nickname содержит: подстрока"
Используйте выражение LIKE
. Вот цитата из раздела 4.6.9 Like Expression спецификации JPA 1.0 (JSR 220):
Синтаксис для использования оператора сравнения оператора сравнения
[NOT] LIKE
в в условном выражении выглядит следующим образом:строковое_выражение [NOT] LIKE pattern_value [ESCAPE escape_character]
Строковое_выражение должно иметь строковое значение. Значение
pattern_value
представляет собой строковый литерал или строковое значение входной параметр, в котором знак подчеркивания (_) обозначает любой отдельный символ, символ символ процента (%) обозначает любой последовательность символов (включая пустую последовательность), а все остальные символы обозначают сами себя. необязательный символ escape_character представляет собой односимвольный строковый литерал или входной параметр с символьным значением (т.е.char
илиCharacter
) и используется для того. используется для экранирования специального значения символы подчеркивания и процента inpattern_value
.Примеры:
- address.phone LIKE '12%3' верно для '123' '12993' и ложно для '1234'
- asentence.word LIKE 'l_se' верно для 'lose' и ложно для 'loose'
- aword.underscored LIKE '\_%' ESCAPE '\' верно для '_foo' и false для 'bar'
- address.phone NOT LIKE '12%3' false для '123' и '12993' и true для '1234'
Если значение
string_expression
orpattern_value
являетсяNULL
или неизвестным, значение выражения LIKE-выражения неизвестно. Еслиescape_character
указан и является.NULL
, значение выражения LIKE неизвестно.