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

时间:2012-03-16 07:50:01

标签: regex hibernate jpql

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

我需要根据正则表达式添加WHERE子句, 这样的一些模式是SELECT * FROM TableName,其中REGEXP_LIKE(ColumnName,'Pattern')。我从结果中得到的是字符串列表,但我需要将数据库中的映射实体作为对象而不是字符串。

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

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

1 个答案:

答案 0 :(得分:0)

JPQL中没有完整的正则表达式,但有模式值。根据规范JPQL 2.2 (p. 188)

  

pattern_value是字符串文字或字符串值输入参数,其中下划线(_)代表任何单个字符,百分号(%)代表任何字符序列(包括空序列),以及所有字符其他角色代表自己。

     

[...]

     

示例:

     
      
  • address.phone LIKE '12%3'适用于'123''12993'而false适用于'1234'

  •   
  • asentence.word LIKE'l_se'对于'lost'是正确的而对于'loose'是错误的

  •   
  • aword.underscored LIKE'_%'ESCAPE'\'对于'_foo'为真,false为'bar'

  •   
  • address.phone NOT LIKE '12%3'对于'123'和'12993'为false而对于'1234'为

  •   

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