场景:
在controller里面调用多线程,多线程中有获取对象中的对象(已配置懒加载),结果报could not initialize proxy - no Session。
第一个想到的就是 openSessionInView,网上找了一下spring boot如何开启,于是就试了下面的方式,
配置文件加
spring.jpa.open-in-view=true,
启动类加
@Bean
public OpenEntityManagerInViewFilter openEntityManagerInViewFilter(){
return new OpenEntityManagerInViewFilter();
}
结果都不顶用
最后实在没有办法,想到在controller里面get一次要懒加载的实体,结果成了,但总感觉不是最完美的解决方案,又找了很久,在国外的一篇文章中找到线索。
试试在service层的查询方法上面加上@Transactional(readOnly=true) 注解,结果成了,大喜~~~