解决Hibernate native sql中双冒号(:)转义的问题

在处理签到任务时,遇到查询历史连续最大签到记录的问题。最初试图通过算法解决,但最终选择在数据库层面处理。在使用Hibernate的native SQL查询时,遇到冒号(:)导致的预编译参数错误。通过查看Hibernate源码找到解决方案,避免了重写Hibernate。此博客分享了这一经验,希望对其他开发者有所帮助。
摘要由CSDN通过智能技术生成

最近在做一个签到的任务,由于要查询到历史连续最大签到记录的值,起初还是有点迷茫的--有一种想将查询结果查询出来,然后使用算法来解决这个问题。但是折腾了半天,感觉有点难以处理,所以就google了一下和“签到”类似的处理方法,最终参考别人的实现是通过数据库来实现的,具体怎么处理这里不过多介绍了,文章结尾会将链接贴上。

回归到我需要讲解的问题--使用Hibernate 时,native sql中包含冒号(:),由于冒号在hibernate中是一个特殊的符号,用来标识预编译参数变量的.为何我会这么纠结呢,因为我们的系统定位的dao层就是使用Hibernate,所以我只好寻求能够处理好的方式(虽然我知道可以用spring jdbc来分分钟就可以实现),下面看下我初始的sql语句(看不懂也没有关系):


貌似上面的sql语句马上就可以大功告成了,因为我在sqlyog中直接复制进去可以直接将查询结果查询出来,但是当程序跑起来的时候,后台直接抛出一个异常:’Space is not allowed after parameter pref

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值