Hibernate OpenSessionInViewFilter问题
使用spring mvc、spring3.0.5、hibernate3整的一个框架,hibernate使用懒加载模式时会报could not initialize proxy - no Session,于是配置了OpenSessionInViewFilter,可是还是报错,通过关联spring的源码后debug,这个过滤器确实是执行了,并且创建了Session,然后去Dao层通过SessionFactory.getCurrentSession()执行操作,如下代码:
protected Session getSession(){
Session session = sessionFactory.getCurrentSession();
Session session1 = SessionFactoryUtils.doGetSession(sessionFactory, true);
LOGGER.info("daoSession:" + session);
LOGGER.info("filterSession:" + session1);
LOGGER.info(session == session1);
return session;
}
代码中session是通过依赖注入的sessionFactory获取的当前session,session1这种方式是查看spring的OpenSessionInViewFilter源码中拷过来的,日志输出session == session1为true,其中的一个dao操作为:
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public T find(Serializable entityId) {
//return (T)getSession().get(clazz, entityId);
return (T)getSession().load(clazz, entityId);
}
但是执行这个find方法结果还是报could not initialize proxy - no Session,这就奇怪了,难道session在执行完find方法后就被关闭了?所以在返回到jsp中使用el表达式取值的时候session已经关闭了?求大神指点迷津!!