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
Như bạn có thể thấy 9 chữ số cho Integer
không dẫn đến giá trị âm trong loại Integer
.Độ dài của khóa chính cho kiểu dữ liệu dài trong Java (và Hibernate)?
Nhưng 19 chữ số trong Long
có thể gây ra dấu hiệu tràn ... Tôi thường thấy NUMBER(18)
as type của cột ID ...
Có thể có vấn đề với bản đồ NUMBER(19)
để Long
trong Hibernate?
Không thể hiểu được: độ dài của cột trong bảng trong oracle ảnh hưởng đến khả năng đạt được số âm trong ID từ Hibernate? – Andremoniy
'log (9'999'999'999'999'999'999)/log (2) = ~ 63.1166338029' để bạn không thể giữ giá trị này trong 63 bit (lưu ý có 19 trong số' 9'). Vì vậy, bit dấu sẽ được sử dụng ... Và có thể là lỗi ném Hibernate. Đó là một câu hỏi ... – gavenkoa
Ok, đó là câu trả lời: bit dấu có thể được sử dụng. Vậy câu hỏi là gì? – Andremoniy