我将 JPA 与 hibernate 和 Oracle DB(oracle 11.2 xe)一起使用。我试图保存一个大数字,但保存在数据库中的不是我输入的大数字。

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

@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"

但是在数据库中存储的值是 20 ...

版本:
jpa 1.0
hibernate-3.2.6.ga.jar
jboss-4.2.3.GA

我究竟做错了什么?

最佳答案

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

10-08 13:04