通过hibernate加载大型无符号int主键

通过hibernate加载大型无符号int主键,hibernate,orm,Hibernate,Orm,我知道java没有“无符号整数”类型,所以要映射MySQL无符号整数,我可以选择使用Long。但是Long的问题是,我不能用它来加载Id大于Integer范围的实体。e、 g session.get(User.class, 4294967295L)) 因为该值超出了MySQL中用户表主键整数的范围。 上面的语句抛出org.hibernate.typemischException:应为java.lang.Integer类,应为java.lang.Long类。这似乎合乎逻辑 因此,问题是如何将带有

我知道java没有“无符号整数”类型,所以要映射MySQL无符号整数,我可以选择使用Long。但是Long的问题是,我不能用它来加载Id大于Integer范围的实体。e、 g

session.get(User.class, 4294967295L))
因为该值超出了MySQL中用户表主键整数的范围。 上面的语句抛出org.hibernate.typemischException:应为java.lang.Integer类,应为java.lang.Long类。这似乎合乎逻辑


因此,问题是如何将带有unsigned int的旧式数据库映射到hibernate中,并且对大于2,14,74,83648(2 exp 31)的值仍然使用session.get

,尽管我可以执行session.createQuery(“from User where id=4294967295”),但这将绕过二级缓存。因此,您只想使用session.get和.load。您可能会遇到TypeMitchedException,因为用户的ID属性的类型为int或Integer,而不是因为数据库表中列的类型。当然,ID属性也应该定义为Long。谢谢JB,这就是问题所在,这是一个愚蠢的错误:-(