使用JPA/Hibernate将Java BigDecimal 0.0000001保存到oracle时出现异常

使用JPA/Hibernate将Java BigDecimal 0.0000001保存到oracle时出现异常,java,hibernate,jpa,oracle11g,bigdecimal,Java,Hibernate,Jpa,Oracle11g,Bigdecimal,当我试图将属性值为new BigDecimal(“0.0000001”)的实体的值保存到具有数据类型编号(10,7)的Oracle表列时,我看到了一个异常。 保存具有相同比例的其他值,例如新的BigDecimal(“0.0000012”) 以下是我看到的例外 13:56:56561警告[JDBCExceptionReporter]SQL错误:1438,SQLState:22003 13:56:56561错误[JDBCExceptionReporter]ORA-01438:值大于此列允许的指定精度

当我试图将属性值为new BigDecimal(“0.0000001”)的实体的值保存到具有数据类型编号(10,7)的Oracle表列时,我看到了一个异常。 保存具有相同比例的其他值,例如新的BigDecimal(“0.0000012”)

以下是我看到的例外

13:56:56561警告[JDBCExceptionReporter]SQL错误:1438,SQLState:22003
13:56:56561错误[JDBCExceptionReporter]ORA-01438:值大于此列允许的指定精度

这一切正常,可能是由于其他原因导致的错误

drop table test;

Create table test (
BigDecimal Number (10,7)
);

insert into  test values (0.0000001);
insert into  test values (0.0000012);
insert into  test values (101);
insert into  test values (102);

这被称为0.1的不可代表性,但保存带有六位小数的值时不会出现问题BigDecimal(“0.000001”)。我不认为值0.0000001是导致问题的原因。您的错误消息中的关键字更大:0.0000001对于您的列来说不是太大,因此这对我来说意味着您的表中发生了一些您没有告诉我们的事情。例如,表中是否有计算列中值倒数的触发器?请编辑您的问题,以包含您看到的异常的完整堆栈跟踪。如果通过sqlplus存储相同的值,是否有效?如果JDBC驱动程序在存储到数据库之前将bigdecim转换为float,那么这就是一个bug。也许尝试使用另一个版本的驱动程序。BigDecimal和OracleNumber都将数字存储为十进制数字,不需要将它们转换为浮点数。可能它也可能是冬眠中的一个bug。当我试图从蟾蜍那里保存它时,它允许