如何在JPA本机查询中使用':'?

Mat*_*att 6 java mysql jpa spring-data-jpa

我正在做一些数据分析,我有一个 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 ':' 
Run Code Online (Sandbox Code Playgroud)

我已添加@Query(nativeQuery = true,到我的方法中,并更改了我的参数,例如where first_name = :firstnamewhere first_name = ?1@Param我的方法参数中删除了注释,但它没有帮助。

有没有办法在这个查询中转义冒号,或者有其他方法来分配不使用冒号的 rownum 变量?

YCF*_*F_L 8

要解决这个问题,您需要用双反斜杠转义两个点\\:

"SELECT ..., @rownum\\:=@rownum+1 as row_number, ... "
                    ^^^
Run Code Online (Sandbox Code Playgroud)