我正在做一些数据分析,我有一个SQL查询,使用SELECT ..., @rownum:=@rownum+1 as row_number, ...
来获取行号和结果。但是当我把它放到我的JPA方法的原生查询中时(使用Spring Boot / Spring Data JPA),我得到以下异常:
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: Space is not allowed after parameter prefix ':'
我已将@Query(nativeQuery = true,
添加到我的方法中,并已将参数从where first_name = :firstname
更改为where first_name = ?1
,并从我的方法参数中删除了@Param
注释,但它没有帮助。
有没有办法在此查询中转义冒号,或者其他一些分配不使用冒号的rownum变量的方法?
答案 0 :(得分:3)
要解决此问题,您需要使用双反斜杠\\:
"SELECT ..., @rownum\\:=@rownum+1 as row_number, ... "
^^^