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

时间:2011-10-19 23:37:45

标签: 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;

在数据库中,列的创建方式如下:

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

我做错了什么?

1 个答案:

答案 0 :(得分:2)

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