为什么Hibernate将BIGINT映射到BigInteger

时间:2014-12-11 18:01:11

标签: hibernate jpa jdbc

在大多数数据库中,BIGINT是64位整数。有谁知道为什么Hibernate将这些映射到BigInteger而不是Long?我可以很好地处理这些问题,但我只是好奇。

您可以在Dialect.java中看到此类型的默认映射。我甚至发现了一个休眠问题,但没有任何评论表明为什么会这样。

https://hibernate.atlassian.net/browse/HHH-7318

我认为必须有这个选择的原因,但我没有与谷歌取得任何成功。

另外,对我的数据库方法进行子类化并覆盖它会产生什么影响呢?

谢谢!

1 个答案:

答案 0 :(得分:6)

很可能因为BIGINT s可以是无符号的(in MySQL at least,如果不在其他RDBMS中则可以。)

唯一可以保存64位无符号整数范围的Java类型是BigInteger。为此使用long是不正确的,因为这会将18446744073709551615(2 64 - 1)转换为-1。