我正在使用Hibernate.我写了一些原生查询,因为我需要使用sub select语句.
查询看起来像这样:
SELECT sub.rownum FROM
(SELECT k.`news_master_id` AS id, @row := @row + 1 AS rownum
FROM keyword_news_list k
JOIN (SELECT @row := 0) r
WHERE k.`keyword_news_id` = :kid
ORDER BY k.`news_master_id` ASC) AS sub
WHERE sub.id = :nid
Run Code Online (Sandbox Code Playgroud)
当我像这样运行此查询时:
sessionFactory.getCurrentSession()
.createSQLQuery(query)
.setParameter("kid", kid)
.setParameter("nid", nid)
.uniqueResult();
Run Code Online (Sandbox Code Playgroud)
出现此异常:
org.hibernate.QueryException: Space is not allowed after parameter prefix ':' ....
Run Code Online (Sandbox Code Playgroud)
这可能是因为:=操作员.我发现了一些Hibernate问题.这个问题仍然存在.这个问题没有解决办法吗?
我正在做一些数据分析,我有一个 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 = :firstname并where first_name = ?1从@Param我的方法参数中删除了注释,但它没有帮助。
有没有办法在这个查询中转义冒号,或者有其他方法来分配不使用冒号的 rownum 变量?