使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常
前提
在最近的毕设项目中我的数据访问用到了spring data
实体类设置的值
出错过程
使用Jpa提供的api查询实体类List,数据库类型使用的int型,该字段设置的可为空,然后出现以下
虽然知道是基本类型的错,还是好奇debug一下
进入getFieldAccessor(obj).set(obj, value);
方法结束主键被赋值
所以看一下这个方法,难道是表中的每一个值都是单独set到对象的对应属性?
实体类主键是基本类型,但是底层实现是将数据库的主键对应的Integer转换为int型赋值给主键?
由于主键不可为空所以转型应该可以成功
所以当赋值到下一个int非主键uid_ref时因为可以为空,所以数据库Intger的空值直接会抛出异常?因为它会走进这个流程
调用上面的重载,直接抛出异常
注:上面那调用的那些方法是在这个类
注意Integer
这是针对Intger字段的赋值?
所以不同字段的赋值处理不同?
String可为null
结论
不做论证,只关注过程
睡觉…
有大佬还请多多指教