Как применить регулярное выражение в JPQL? - PullRequest
3 голосов
/ 16 марта 2012

Я использую JPA (Hibernate) в качестве слоя персистентности.

Мне нужно добавить предложение WHERE на основе регулярного выражения, например, некоторые из них являются SELECT * FROM TableName, где REGEXP_LIKE (ColumnName, 'Pattern)«).В результате я получаю список строк, но мне нужно получить сопоставленные сущности из БД как объект, а не строку.

Насколько я знаю, JPQL может возвращать результат как объект, но JPQL этого не делает.похоже, что он поддерживает регулярные выражения, так как это расширенное расширение от Oracle.

Как я могу применить регулярное выражение к JPQL ?, что еще мне нужно знать?

1 Ответ

0 голосов
/ 17 января 2018

В JPQL нет полных регулярных выражений, но есть значения шаблонов.В соответствии со спецификацией JPQL 2.2 (стр. 188) :

Pattern_value представляет собой строковый литерал или строковый входной параметр, в котором подчеркивание (_) обозначает любойодин символ, символ процента (%) обозначает любую последовательность символов (включая пустую последовательность), а все остальные символы обозначают сами себя.

[...]

Примеры:

  • address.phone LIKE «12% 3» верно для «123», «12993» иfalse для «1234»

  • asentence.word LIKE «l_se» имеет значение true для «потерять» и false для «свободный»

  • aword.Подчеркнуто LIKE '_%' ESCAPE '\' верно для '_foo' и false для 'bar'

  • address.phone NOT LIKE '12% 3 'является false для' 123 'и '12993' и true для '1234'

Если вам нужны более сложные конструкции регулярных выражений, вам нужно использовать собственные запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...