java.lang.IllegalArgumentException:下溢

时间:2017-10-14 09:58:37

标签: java oracle hibernate jpa

当我尝试将具有JPA-Hibernate的对象持久化到Oracle数据库中时,我得到了这个异常。 这个对象有一些双字段,当这些字段设置为零时,它可以工作!

这些字段的Oracle数据类型是FLOAT(我也尝试“BINARY_DOUBLE”数据类型,但它不起作用) 这些字段的Java数据类型是双

这些字段的值为:

1.503321981455955E-154

4.450283526817318E-308

4.0474E-320

8.309748437E-315

1 个答案:

答案 0 :(得分:0)

在Oracle中,FLOAT是NUMBER的子类型,您指定的所有值都超过了NUMBER类型的限制。 NUMBER可以表示从1.0e-130到1.0e126的值;因此,它不能代表诸如4E-308之类的数字。您给出的大多数值同样超过了BINARY_DOUBLE的限制,这些限制为 2.22507485850720E-308至1.79769313486231E + 308。 See this reference

但是,我不确定你是如何从Java双重中获取这些值的。 Java double仅限于+/- 1.79769313486231570E + 308,至少根据this reference。 Java指定浮点数和双精度数将使用IEEE-754格式和规则。

祝你好运。