在休眠中映射NUMBER(15)

时间:2019-03-29 10:42:23

标签: oracle hibernate

因此,我们在数据模式列中的类型为NUMBER(15)。如何在不更改架构的情况下将其映射到休眠状态? int数据类型太小了,long数据类型太大了(ORA-01438),即使在使用DB列边界持久存储数字时也是如此。

假设该架构是不可修改的,我们不想使用BigInteger。说,我们知道,该数字不会大于372036854775807,因此可以同时容纳long和NUMBER(15)。

Oracle数据库。

1 个答案:

答案 0 :(得分:0)

实际上,这是我的错,是由于对Oracle文档的误解,涉及到数字规模和精度。我认为,精度是“。”之前的部分,而后是小数位数,但不,精度是所有数字的位数。那是造成我的问题,并且在不同的专栏中。

回答我自己的问题:对于适合DB层中使用的类型的数字,不会抛出ORA-01438。因此,如果我知道应用层上使用的数据类型不能大于number(15),则可以安全地在Java中使用long并在DB中使用NUMBER(15)。在违反此约束之前,一切都很好。首先,坚持这个约束很重要,没有BigInteger也无济于事,因为BigInteger可以大于NUMBER(37)。