jpa нативный запрос регулярных выражений, как с querydsl
У меня есть запрос, как это:
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
Пока я отлаживаю тест, он всегда выбрасывает
Использование именованных параметров для метода.[^ [: digit:]] +)? ({? 1}) ([^ [: digit:]] +.)? $ ',' n ')'!
Я что-то пропустил, и как я могу это исправить.
1 ответ
Может быть, попытаться переместить полное регулярное выражение в метод param? и построить его раньше. например:@Query(value = "select t.* from T_PURCHASE t where regexp_like(t.note, ?1, 'n')", nativeQuery = true)
куда ?1
- полностью соберите регулярное выражение с необходимыми параметрами.