在使用SpringData 或者 Hibernate过程中基本上都会遇到懒加载异常的一些问题! 操作级联或者复杂的隐射关系的时候会报错!
SpringBoot 项目中大致可以有五六种解决方案
解决方案
- 关闭 LazyInitialization, 将 fetch 设成 eager, 可以在配置文件,也可注解
- 在 spring boot 的配置文件 application.properties 添加 spring.jpa.open-in-view=true,yml 同理
- 用 spring 的 OpenSessionInViewFilter
- 在 spring boot 的配置文件 application.properties 添加 spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
但是上述方案并不一定能成功,而且 懒加载这样的话, 性能上也有所欠缺!所以或许可以对个别类上关闭 lazy
5. 在出问题的实体类上加 @Proxy(lazy = false)
PS: 那么有没有一种方法不关闭懒加载, 上配置(实际上这是一个反模式)
参考链接
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true