log(2^32) / log(10) =~ 9.63295986126 log(10^0.63295986126) / log(2) =~ 2.10264714605 > 2 bit log(2^64) / log(10) =~ 19.2659197225 log(10^0.2659197225) / log(2) =~ 0.883366197155 < 2 bit
正如您所见,Integer
的9位数字不会导致Integer
类型中的负值。
但Long
中的19位数字会导致符号溢出...我通常会将NUMBER(18)
视为ID列的类型...
在Hibernate中将NUMBER(19)
映射到Long
是否有问题?
答案 0 :(得分:2)
不要使用Long - 它用于数字。你永远不会乘以,加,减去PK。 (你甚至可能从不对它们进行排序)。对于Oracle数据类型NUMBER,请使用oracle.sql.NUMBER或java.math.BigDecimal。