我试图运行一个涉及JDBC自定义变量的查询到MySQL 5.0数据库(Hibernate 4作为ORM):
SET @rownum := 0; SELECT rnum FROM (
SELECT (@rownum := @rownum + 1) AS rnum, col_name_a
FROM table_name
WHERE (col_name_b IS NULL OR col_name_b != 'USER' ) ORDER BY col_name_a) c
WHERE col_name_a = :aValue
重置变量需要第一个SET @rownum := 0;
,但那里不需要冒号(我已根据{{中的建议设置 allowMutilQuery = true ) 3}})。
问题在于以下SELECT
,我继续得到:
org.hibernate.QueryException:参数前缀后不允许使用空格':'
有解决方法吗?我应该使用除
之外的其他方法javax.persistence.Query q = EntityManager instance>.createNativequery(String)
和
q.setParameter(<param name>, <param value>)
答案 0 :(得分:5)
在休眠状态下,冒号:
的转义是用反斜杠完成的:
SET @rownum \:= 0; SELECT rnum FROM ( ...
或者在java中:
String sql = "SET @rownum \\:= 0; SELECT rnum FROM ( ...";