本文主要是介绍jpa中的坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. BigInteger can not case to Long
JPA内部查询是通过createSQLQuery和createQuery实现的。所有的查询都会调用这两个方法。它们的不同点是:
createQuery用的JPQL语句进行查询,createSQLQuery用sql语句查询;
前者以hibernate生成的Bean为对象装入list返回;后者则是以对象数组进行存储;
当通过createSQLQuery查询时,如果存在Bean的实例,则它会按照实例去返回,但是当实例不存在时它会按照JPA给定的默认配置去返回映射值,而bigint的映射正是BigInteger,所以才会出现如上情况。
解决方案:不要使用nativeQuery。
转自:《bug之 JPA采用原生sql查询 BigInteger can not case to Long》
另外有一种说法是:因为把BIGINT(20)定义成了UNSIGNED导致的。——《MySQL中BIGINT与Java数据类型对应问题》
这篇关于jpa中的坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!