【发布时间】:2013-02-19 21:16:48
【问题描述】:
日志(2 ^ 32)/日志(10)=〜9.63295986126
log(10^0.63295986126) / log(2) =~ 2.10264714605 > 2 位
日志(2 ^ 64)/日志(10)=〜19.2659197225
log(10^0.2659197225) / log(2) =~ 0.883366197155
如您所见,Integer 的 9 位数字不会导致 Integer 类型中的负值。
但是Long 中的 19 位数字会导致符号溢出...我通常将NUMBER(18) 视为 ID 列的类型...
在 Hibernate 中将 NUMBER(19) 映射到 Long 是否可能有问题?
【问题讨论】:
-
无法理解:oracle 中表中的列长度如何影响从 Hibernate 获取 ID 中的负数的可能性?
-
log(9'999'999'999'999'999'999) / log(2) =~ 63.1166338029所以你不能把这个值保存在 63 位中(注意有 19 个9)。所以将使用符号位......并且可能会出现 Hibernate 抛出错误。这是一个问题...... -
好的,答案是:可以使用符号位。那么问题是什么?
-
我的母语不是英语:在 Hibernate 中将 NUMBER(19) 映射到 Long 是否有问题?
标签: java oracle hibernate hibernate-mapping