公司有個跑批,原先的事務配置刪了,致使訪問數據庫拿到數據後就關了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)