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 - полностью соберите регулярное выражение с необходимыми параметрами.

Другие вопросы по тегам