JPQL (JPA) ищут подстроку

Я сталкиваюсь с простой проблемой с ищущими объектами немного (sub) строка, которую они могли бы содержать.

Например, у Меня есть пользователи user1, usr2, useeeer3, user4, и я введу в окно поиска "использование", и я ожидаю возвращать user1, useeer3, user4.

Я уверен, что Вы знаете то, что я имею в виду теперь. Есть ли какая-либо конструкция в JPA (JQPL)? Было бы хорошо искать использование ГДЕ так или иначе в именованных запросах. Что-то как "ВЫБОР u ОТ Пользователя u, ГДЕ u.nickname содержит: подстрока"

9
задан Pascal Thivent 1 May 2010 в 00:55
поделиться

1 ответ

Используйте выражение 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) и используется для того. используется для экранирования специального значения символы подчеркивания и процента in pattern_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 or pattern_value является NULL или неизвестным, значение выражения LIKE-выражения неизвестно. Если escape_character указан и является. NULL, значение выражения LIKE неизвестно.

14
ответ дан 4 December 2019 в 14:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: