Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在JPQL中应用正则表达式?_Regex_Hibernate_Jpql - Fatal编程技术网

Regex 如何在JPQL中应用正则表达式?

Regex 如何在JPQL中应用正则表达式?,regex,hibernate,jpql,Regex,Hibernate,Jpql,我使用JPA(Hibernate)作为持久层 我需要添加一个基于正则表达式的WHERE子句, 这样的一些模式是SELECT*fromtablename,其中REGEXP_类似于(ColumnName,'pattern')。我从结果中得到的是字符串列表,但我需要从数据库中获取映射实体,作为对象而不是字符串 据我所知,JPQL可以将结果作为对象返回,但JPQL似乎不支持正则表达式,因为它是Oracle的适当扩展 如何将正则表达式应用于JPQL?我还需要知道什么?JPQL中没有完整的正则表达式,但有模

我使用JPA(Hibernate)作为持久层

我需要添加一个基于正则表达式的WHERE子句, 这样的一些模式是SELECT*fromtablename,其中REGEXP_类似于(ColumnName,'pattern')。我从结果中得到的是字符串列表,但我需要从数据库中获取映射实体,作为对象而不是字符串

据我所知,JPQL可以将结果作为对象返回,但JPQL似乎不支持正则表达式,因为它是Oracle的适当扩展


如何将正则表达式应用于JPQL?我还需要知道什么?

JPQL中没有完整的正则表达式,但有模式值。根据规范:

模式_值是字符串文字或字符串值输入参数,其中下划线(u)表示任何单个字符,百分比(%)表示任何字符序列(包括空序列),所有其他字符表示它们自己

[……]

示例:

  • 类似于“12%3”的address.phone对于“123”“12993”为true,对于“1234”为false

  • 像“l_se”这样的词对“lose”是真的,对“loose”是假的

  • 带下划线的“\u%”ESCAPE“\”表示“\ufoo”,false表示“bar”

  • address.phone与'12%3'不同,对于'123'和'12993'为假,对于'1234'为真


如果您想要更高级的正则表达式构造,您需要使用本机查询。

这可能是您问题的答案:您可能需要使用本机查询。