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

雨燕双飞 提交于 2020-08-12 05:50:12

使用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类中提供的方法,但是这种方式能有效保证精度。

 

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!