mysql jpa 正则,jpa本机查询正则表达式与querydsl一样

I have i query statement like this:

select t.*

from T_ex_table t

where regexp_like(t.note,

'^(.*[^[:digit:]]+)?([condition])([^[:digit:]]+.*)?$',

'n')

And if I use it in jpa with querydsl(com.querydsl) like(this is scala, and it doesn't important):

@Query(value =

"select t.*" +

" from T_PURCHASE t" +

" where regexp_like(t.note," +

" '^(.*[^[:digit:]]+)?([?1])([^[:digit:]]+.*)?$'," +

" 'n')", nativeQuery = true)

def getByTrackingNo(trackingNo: String): Purchase

While i debug test, it always throw

Using named parameters for method public abstract Purchase

PurchaseRepository.getByTrackingNo(java.lang.String)

but parameter 'trackingNo' not found in annotated query 'select

t.pt_note, t.tracking_no from T_EC_PURCHASE t where

regexp_like(t.pt_note, '^(.[^[:digit:]]+)?({?1})([^[:digit:]]+.)?$', 'n')'!

Did i missed something, and how can i fix it.

解决方案

Maybe try to move full regexp to the param method? and build it before. for example :

@Query(value = "select t.* from T_PURCHASE t where regexp_like(t.note, ?1, 'n')", nativeQuery = true)

Where ?1 - yours fully build regexp with required parameters.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值