問題:在hibernate中執行mysql語句,如果mysql語句中含有@a := 1 之類的變量,回報這個錯誤
語句類似於“set @rownum=0, @preval=null; select @rnk:=IF((@rownum := @rownum + 1) and (@preval <=> sal), @rnk, @rownum) AS rnk, @preval:=sal sal FROM emp order by sal;”在mysql(5.X版本)中的sql編輯器中可以運行通過,但是在java程序中卻拋出異常:org.hibernate.QueryException: Space is not allowed after parameter prefix ':' ....
在網上 查找了資料,卻發現這是hibernate3.X包之下的一個bug,
(參照http://bugs.mysql.com/bug.php?id=41741)在hibernate4.X中已經修復。
但是項目中不可能使用hibernate4.0,最后不能不使用原生jdbc進行解決...
引用:http://huapengpeng1989412.blog.163.com/blog/static/58828754201291411578566/