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

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

猜你喜欢

转载自www.cnblogs.com/yanggb/p/12705485.html