问题
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.
回答1:
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.
来源:https://stackoverflow.com/questions/49984210/jpa-native-query-regexp-like-with-querydsl