使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常

前提

在最近的毕设项目中我的数据访问用到了spring data
实体类设置的值
使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常

出错过程

使用Jpa提供的api查询实体类List,数据库类型使用的int型,该字段设置的可为空,然后出现以下
使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常
虽然知道是基本类型的错,还是好奇debug一下
进入getFieldAccessor(obj).set(obj, value);
使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常
方法结束主键被赋值
使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常
所以看一下这个方法,难道是表中的每一个值都是单独set到对象的对应属性?
使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常
实体类主键是基本类型,但是底层实现是将数据库的主键对应的Integer转换为int型赋值给主键?
由于主键不可为空所以转型应该可以成功

所以当赋值到下一个int非主键uid_ref时因为可以为空,所以数据库Intger的空值直接会抛出异常?因为它会走进这个流程
使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常
使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常
调用上面的重载,直接抛出异常

注:上面那调用的那些方法是在这个类
使用Spring data的默认实现Hibernate,实体类数据类型没有用包装类导致的Null赋值异常
注意Integer
这是针对Intger字段的赋值?
所以不同字段的赋值处理不同?
String可为null

结论

不做论证,只关注过程

睡觉…

有大佬还请多多指教