问题:在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/
Space is not allowed after parameter prefix ':'
时间: 2024-10-31 13:55:12