这是hibernate延迟加载的问题,从包名看你用的是Hibernate3,Hibernate3中默认属性也会延迟加载。
我的办法是log.info("persistence job");
//你要实现这个函数,跟你查找其他组件的方法一样
SessionFactory sessionFactory = ServiceFactory.getSessionFactory ();
//然后绑定session
Session s = sessionFactory.openSession();
TransactionSynchronizationManager.bindResource(sessionFactory,new SessionHolder(s));
//然后是你的代码
JobService jobService = ServiceFactory.getJobService();
List jobs = jobService.getSendPooling();
Iterator jobList = jobs.iterator();
while(jobList.hasNext()){
SenPoo sendPooling = (SenPoo)jobList.next();
ChannelInstance instance = sendPooling.getChaIns();//<--------此句出现了异常
我的办法是log.info("persistence job");
//你要实现这个函数,跟你查找其他组件的方法一样
SessionFactory sessionFactory = ServiceFactory.getSessionFactory ();
//然后绑定session
Session s = sessionFactory.openSession();
TransactionSynchronizationManager.bindResource(sessionFactory,new SessionHolder(s));
//然后是你的代码
JobService jobService = ServiceFactory.getJobService();
List jobs = jobService.getSendPooling();
Iterator jobList = jobs.iterator();
while(jobList.hasNext()){
SenPoo sendPooling = (SenPoo)jobList.next();
ChannelInstance instance = sendPooling.getChaIns();//<--------此句出现了异常
SessionHolder holder = (SessionHolder) TransactionSynchronizationManager.
getResource(sessionFactory);
s = null;
if (holder != null) {
s = holder.getSession();
s.flush();
TransactionSynchronizationManager.unbindResource(sessionFactory);
SessionFactoryUtils.closeSessionIfNecessary(s, sessionFactory);
}觉得这个办法不太优雅,谁有更好的办法解决这种Open Session In Method一类问题
否则最好加上事务处理,同时采用opensessioninview,可参看spring的这个类。OpenSessionInViewFilter就可以了。