我有这样的查询语句:
select t.*
from T_ex_table t
where regexp_like(t.note,
'^(.*[^[:digit:]]+)?([condition])([^[:digit:]]+.*)?$',
'n')
如果我在jpa中使用它与querydsl(com.querydsl)一样(这是scala,它并不重要):
@Query(value =
"select t.*" +
" from T_PURCHASE t" +
" where regexp_like(t.note," +
" '^(.*[^[:digit:]]+)?([?1])([^[:digit:]]+.*)?$'," +
" 'n')", nativeQuery = true)
def getByTrackingNo(trackingNo: String): Purchase
当我调试测试时,它总是抛出
使用方法public abstract Purchase的命名参数 PurchaseRepository.getByTrackingNo(java.lang.String中) 但参数' trackingNo'没有在带注释的查询中找到'选择 来自T_EC_PURCHASE的t.pt_note,t.tracking_no regexp_like(t.pt_note,' ^(。 [^ [:digit:]] +)?({?1})([^ [:digit:]] +。)? $',' n')'!
我错过了什么,我该怎么办?
答案 0 :(得分:1)
也许尝试将完整的正则表达式移动到param方法?并在之前构建它。例如:
@Query(value = "select t.* from T_PURCHASE t where regexp_like(t.note, ?1, 'n')", nativeQuery = true)
其中?1
- 您的所有参数都完全构建了regexp。