Java(和Hibernate)中Long数据类型的主键长度?

时间:2013-03-05 12:54:57

标签: java oracle hibernate hibernate-mapping

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是否有问题?

1 个答案:

答案 0 :(得分:2)

不要使用Long - 它用于数字。你永远不会乘以,加,减去PK。 (你甚至可能从不对它们进行排序)。对于Oracle数据类型NUMBER,请使用oracle.sql.NUMBER或java.math.BigDecimal。