hibernate占位符的问题导致无法执行带变量的mysql sql语句

今天为研发改写了一个巨复杂的sql,因为保密原因就不贴出来了,自觉得意之时开发哥哥抱怨说只能在命令行执行,一旦放程序里就报错(hibernate包装过)

这里给一个简单的sql来做例子:

select a.id ,a.d ,if(@od=a.d,@rank:=@rank+1,@rank:=1) num ,@od:=a.d from (select id ,d from number c order by c.id) as a ,(select @od:=null,@rank:=0 ) as b;   

程序报错如下:

org.hibernate.QueryException: Space is not allowed after parameter prefix ':'

这其实是一个hibernate占位符的问题,解决方式有两种

1,使用createNativeQuery("SELECT @rank \\:= 1, @od \\:= 2, @a + @b");这种类似的方式(依赖于hibernate版本,具体哪个版本忘了)


2,使用hibernate自定义sql模式即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值