在大多数数据库中,BIGINT是64位整数。有谁知道为什么Hibernate将这些映射到BigInteger而不是Long?我可以很好地处理这些,但我很好奇。
您可以在Dialect.java中看到此类型的默认映射。我什至发现了一个 hibernate 问题,但是没有任何评论指出为什么会这样。
https://hibernate.atlassian.net/browse/HHH-7318
我认为一定有一个选择的理由,但是我在Google上没有取得任何成功。
另外,将数据库的方言子类化并覆盖它会产生什么影响?
谢谢!
最佳答案
很可能是因为BIGINT
可以是无符号的(in MySQL at least,如果不能在其他RDBMS中使用)。
可以容纳64位无符号整数的整个范围的唯一Java类型是BigInteger
。为此使用long
是不正确的,因为这会将18446744073709551615(264-1)转换为-1。
关于hibernate - Hibernate为什么将BIGINT映射到BigInteger,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27429422/