我正在使用JPA(Hibernate)作为持久层。
我需要根据正则表达式添加WHERE子句, 这样的一些模式是SELECT * FROM TableName,其中REGEXP_LIKE(ColumnName,'Pattern')。我从结果中得到的是字符串列表,但我需要将数据库中的映射实体作为对象而不是字符串。
据我所知,JPQL可以将结果作为对象返回,但JPQL似乎不支持正则表达式,因为它是Oracle的一个专有扩展。
如何将正则表达式应用于JPQL?还需要知道什么?
答案 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'为
如果您需要更高级的正则表达式构造,则需要使用本机查询。