expected type: java.lang.Double, actual value: java.math.BigDecimal


使用Hibernate的时候报【expected type: java.lang.Double, actual value: java.math.BigDecimal】这样的错,是因为在Hibernate中Java和数据库中定义的数据类型映射没有对应上的原因。

具体是,在Java类中定义的是Double类型,而数据库(SQL Server)中定义的是numeric(decimal)类型,而Hibernate对数据库中(SQL Server)的numeric(decimal)类型在Java中的映射是BigDeciaml类型,映射没有对应上也就导致了给该字段赋相同类型的值失败,也就产生了上面的报错信息。

解决的办法一般有两个,一个是将数据库(SQL Server)中的类型转为float类型,这种方式只适用于对数值精度不敏感的场景中,因为这个类型会损失一定的精度;另一种办法是在Java类中定义的类型变为BigDecimal类型,但是计算的时候会比较麻烦,因为必须使用BigDecimal类中提供的方法,但是这种方式能有效保证精度。

 

"记忆总是在不经意间窜入脑海。"


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM