公司有个跑批,原先的事务配置删了,致使访问数据库拿到数据后就关了sessionjava
众所周知,懒加载就是用到该数据时才去数据库加载,但session都关了,还谈何加载,并报了下面这个错spring
2019-05-28 09:45:00,191 cn.com.sinosoft.job.StaffWelfareInsuredJob.doJob(StaffWelfareInsuredJob.java:98) INFO -员工福利承保任务:进行承保操做。订单号为:B0001552097 2019-05-28 09:45:00,191 org.hibernate.LazyInitializationException.<init>(LazyInitializationException.java:42) ERROR -failed to lazily initialize a collection of role: cn.com.sinosoft.iecs.online.domain.sale.GeStaffPolicy.geStaffInfos, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: cn.com.sinosoft.iecs.online.domain.sale.GeStaffPolicy.geStaffInfos, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375) at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:122) at org.hibernate.collection.PersistentBag.size(PersistentBag.java:248) at cn.com.sinosoft.iecs.online.sale.service.impl.StaffWelfareSaleServiceImpl.getStaffWelfareInfo(StaffWelfareSaleServiceImpl.java:96) at cn.com.sinosoft.job.StaffWelfareInsuredJob.doJob(StaffWelfareInsuredJob.java:99) at sun.reflect.GeneratedMethodAccessor12895.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:269) at cn.com.sinosoft.springframework.scheduling.quartz.BeanInvokingJobDetailFactoryBean$BeanInvokingJob.execute(BeanInvokingJobDetailFactoryBean.java:486) at org.quartz.core.JobRunShell.run(JobRunShell.java:223) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
加回事务配置后,session再也不是用完就关,问题解决。数据库
@Transactional(value="transactionManager",isolation=Isolation.READ_UNCOMMITTED)