异常信息:数值转换异常,java.math.BigDecimal cannot convert to java.lang.Long
场景:用Hibernate执行SQL语句,尤其是执行count时
解决方法:
执行sql语句,返回成BigDecimal的这种 可以试试这样做:
修改SQL语句:select count(t.id) as count
在list()前调用q.addScalar("count", Hibernate.LONG)
感悟:以前遇到过这种问题,当时是一个项目从Sybase库迁移到Oracle库,遇到问题之后,没有仔细思考,直接将类似的所有调用返回值的地方都改成了BigDecimal型,改动量相当大,因为除了count还有其它一些情况下也需要转换。 :shock:
直到今天测试报的bug中又遇到了这个问题,随意在群了说了一下,王大拿马上就给出了另一种解决方法,确实令我相当的惊讶。实力还是从一个个小的细节积累起来的啊,佩服 :idea:
场景:用Hibernate执行SQL语句,尤其是执行count时
解决方法:
执行sql语句,返回成BigDecimal的这种 可以试试这样做:
修改SQL语句:select count(t.id) as count
在list()前调用q.addScalar("count", Hibernate.LONG)
感悟:以前遇到过这种问题,当时是一个项目从Sybase库迁移到Oracle库,遇到问题之后,没有仔细思考,直接将类似的所有调用返回值的地方都改成了BigDecimal型,改动量相当大,因为除了count还有其它一些情况下也需要转换。 :shock:
直到今天测试报的bug中又遇到了这个问题,随意在群了说了一下,王大拿马上就给出了另一种解决方法,确实令我相当的惊讶。实力还是从一个个小的细节积累起来的啊,佩服 :idea:

本文探讨了在使用Hibernate执行SQL语句时遇到的数值转换异常问题,并提供了通过修改SQL语句和调整数据类型来解决该问题的方法。分享了在项目迁移过程中遇到相似问题时的经验,强调了从细节积累技术实力的重要性。
2758

被折叠的 条评论
为什么被折叠?



