Designed by 77
加载资源 ......
感谢 ♥ 作者
先不感谢了

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

 

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

posted @ 2020-05-24 14:00  yanggb  阅读(1762)  评论(0编辑  收藏  举报