hibernate – 使用JPA在数据库中未正确保存BigDecimal

我正在使用带有hibernate的JPA和一个Oracle DB(oracle 11.2 xe).我正在尝试保存一个大数字但是在DB中保存的内容并不是我输入的大数字.

我有一个列,我想存储一个像这样映射的大十进制数:

@Column(name = "INVOICE_AMOUNT", precision = 25, scale = 2, nullable = false)
private BigDecimal amount;

在DB中,列的创建方式如下:

INVOICE_AMOUNT NUMBER(25,2) DEFAULT 0 NOT NULL,

问题是当我试图存储号码“19999979998000000”时.就在我执行持久化之前,我调试了该字段,它说:

amount = {java.math.BigDecimal@13204}"1.9999979998E+16"

但在DB中存储的值是20 …

版本:

jpa 1.0
hibernate-3.2.6.ga.jar
jboss-4.2.3.GA

我究竟做错了什么?

最佳答案 升级到ojdbc14版本10.2.0.5解决了这个问题(我认为它已在10.2.0.4中修复)

点赞