hibernate3.x 异常 could not initialize proxy

使用HibernateTemplate的save、load等方法时,它的Session管理策略是:打开session,进行相关操作,默认使用 lazy加载结果,不会发出sql语句,返回的是代理类,然后关闭session,此时你得到了一个A的代理类,如果你要调用 A实例的getter方法,那么它就会去实际加载A对象,发出sql语句,可此时session已经关闭,因此 会抛出异常,提示ould not initialize proxy - no Session。


解决方案
1、session的load方法改成get就可以了
2、使用OpenSessionInView 但要注意hibernateFilter过滤器和struts2过滤器在映射时的先后顺序,同时要配置事物处理,否则会导致session处于只读状态而不能做修改、删除的动作


web.xml文件中如下配置


<filter>
        <filter-name>OpenSessionInView</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInView</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>


你可能感兴趣的:(proxy,hibernate3,initialize,could,not)