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