先抛出问题:
我写了一个jpa方法,类似下方:
@Query(value = "select a.id from test_user a")
List findIds();
然后在业务处理的时候,抛错:
java.math.BigInteger cannot be cast to java.lang.Long
去debug一看,果然查出来的id都被转换成了BigInteger,而我是当成Long处理的,所以自然报错了。
id字段的定义明明是bigInt,bigint在java中的对应类型是Long啊,怎么会是BigInteger?
找了很多说法,大概如下:
- mysql版本不对,感觉说法靠谱,因为确实有别的项目用的8.0.19,也同样使用jpa,返回的值就是Long类型。但是将jar包从8.0.13更换为8.0.19,还是报错(未解决,有待研究)数据库字段定义不对,和长度还有什么无符号有符号有关系(不对症)使用JPQL,如下,直接使用,dto代替表名,dto字段名代替表字段名(解决)
@Query(value = "select a.accountNumber from BudgetAccount a,BudgetAccountExpand b " +
"where a.id = b.id and b.budgetHeaderId = ?1 and a.status = 1")
List findAccountNumberByHeaderId(Long budgetHeaderId);
每日分享一个知识点,欢迎大家关注和交流


![[问题记录]mysql中的bigint转换成Long?BigInteger? [问题记录]mysql中的bigint转换成Long?BigInteger?](http://www.mshxw.com/aiimages/31/732859.png)
