代码之家  ›  专栏  ›  技术社区  ›  Matt

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

  •  3
  • Matt  · 技术社区  · 7 年前

    我正在做一些数据分析,我有一个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变量的方法?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Youcef LAIDANI    7 年前

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

    "SELECT ..., @rownum\\:=@rownum+1 as row_number, ... "
                        ^^^