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