在大多数数据库中,BIGINT是64位整数。有谁知道为什么Hibernate将这些映射到BigInteger而不是Long?我可以很好地处理这些问题,但我只是好奇。
您可以在Dialect.java中看到此类型的默认映射。我甚至发现了一个休眠问题,但没有任何评论表明为什么会这样。
https://hibernate.atlassian.net/browse/HHH-7318
我认为必须有这个选择的原因,但我没有与谷歌取得任何成功。
另外,对我的数据库方法进行子类化并覆盖它会产生什么影响呢?
谢谢!
答案 0 :(得分:6)
很可能因为BIGINT
s可以是无符号的(in MySQL at least,如果不在其他RDBMS中则可以。)
唯一可以保存64位无符号整数范围的Java类型是BigInteger
。为此使用long
是不正确的,因为这会将18446744073709551615(2 64 - 1)转换为-1。