`
feiyan
  • 浏览: 20952 次
  • 性别: Icon_minigender_2
  • 来自: 沧州
最近访客 更多访客>>
社区版块
存档分类
最新评论

SHH could not initialize proxy - the owning Session was closed 和延迟加载问题

阅读更多
1.SSH使用时,出现could not initialize proxy - the owning Session was closed 时的解决方案。
could not initialize proxy - the owning Session was closed
解决、
第一步、去掉hibernate的延迟加载
<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>
     org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
</filter
<filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>
第二步、 hbm.xml中 lazy="false"
<many-to-one name="deptInfo" lazy="false">
            <column name="deptId"/>
        </many-to-one>
2.<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
<!-- 和 spring 中的sesssionfactory ID 一致 --><init-param><param-name>sessionFactoryBeanName</param-name><param-value>sessionFactory</param-value></init-param></filter><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>*.do</url-pattern><!-- *.jsp, *.do--></filter-mapping>
不过, 这时候又会导致更新数据时抛出如下异常:
Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

这时候再去网上找解决方案, 会有人说: 把参数 singleSession改为false, 就行了. 不过, 改完后, 估计不久就会遇到另一个郁闷的异常:

org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions

这下完了, 两个方案都不行, 到底怎么办? 还好, 在http://xuliangyong.iteye.com/blog/144818的主页上, 给了一个方案, 就是改写 OpenSessionInViewFilter 的代码, 非常感谢, 下面给出的就是最终方案:

web.xml

< filter-name >hibernateFilter</filter-name>

< filter-class > org.springframework.orm.hibernate3.support.OurOpenSessionInViewFilter </filter-class>

OurOpenSessionInViewFilter.java 代码:

package org.springframework.orm.hibernate3.support;

import org.hibernate.*;

/** * 单session模式下, 默认会发生无法提交的错误: * Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition. * 需要设置FlushMode并刷新session. * 参考: http://xuliangyong.iteye.com/blog/144818 * @author 刘长炯 */publicclass OurOpenSessionInViewFilter extends OpenSessionInViewFilter {
   
    public OurOpenSessionInViewFilter() {
        super.setFlushMode(FlushMode.AUTO);
    }

    protectedvoid closeSession(Session session, SessionFactory sessionFactory) {
        session.flush();
       
        try {
            session.getTransaction().commit();
        } catch (HibernateException e) {
            // TODO Auto-generated catch block//e.printStackTrace();
        }
       
        super.closeSession(session, sessionFactory);
    }
}

解决使用1的方法
分享到:
评论

相关推荐

    SHH问题配置错误及解决

    **问题二:Could not open ServletContext resource [/WEB-INF/applicationContext.xml]** 此错误表示服务器无法找到或解析`applicationContext.xml`配置文件。检查该文件是否存在于`WEB-INF`目录下,同时确认文件的...

    TGF-β、Shh信号通路调控肾纤维化上皮-间质转化的研究进展

    TGF-β、Shh信号通路调控肾纤维化上皮-间质转化的研究进展,齐堃,张彧,肾纤维化(RF)被认为是不同原因所致慢性肾脏病进展为终末期肾衰竭的共同通路,涉及多种细胞因子和多条信号通路。转化生长因子β

    SHH错误总结 SHH错误总结SHH错误总结SHH错误总结

    SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。SSH错误可能出现在各种情况中,例如配置问题、权限问题、密钥对问题或者网络障碍等。以下是对SSH常见错误及其解决方案的...

    Python库 | shh-0.1.0.zip

    资源分类:Python库 所属语言:Python 资源全名:shh-0.1.0.zip 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    jpa规范下的shh2配置要点.docx

    在JPA(Java Persistence API)规范下,SHH2(Hibernate Search、Hibernate ORM 和 Hibernate Tools 的组合)的配置涉及多个方面,包括依赖库、Spring框架的配置以及持久化单元的设置。以下是一些关键点的详细说明:...

    SHH2-lib.rar_sh_shh2_shh2 oa_shh2 demo_sshdemo

    标题中的"SHH2-lib.rar_sh_shh2_shh2 oa_shh2 demo_sshdemo"似乎是一个组合了多个关键词的字符串,它可能代表了这个压缩包所包含的关键技术或项目名称。根据描述,我们可以推测这应该是一个基于Struts、Spring和...

    shh下载

    shh下载

    java学习shh框架jar包

    - Session和SessionFactory:Session是数据库会话,用于操作持久化对象;SessionFactory创建并管理Session。 - CRUD操作:Hibernate支持创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据库记录...

    基因芯片技术检测Shh蛋白对脑梗死小鼠脑皮质组织microRNA-210表达的影响.pdf

    在探讨Shh蛋白对脑梗死小鼠脑皮质组织microRNA-210表达影响的研究中,科研人员首先建立了小鼠脑皮质梗死模型。利用基因芯片技术,筛选出了脑梗死小鼠脑皮质组织中的差异表达基因,并通过qRT-PCR技术对其差异性表达...

    SHH学习笔记

    SHH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他安全网络服务。它主要用于在服务器之间传输数据,确保数据在传输过程中不被窃取或篡改。SHH通过加密技术提供了强大的身份验证和...

    SHH框架集合webservice

    SHH框架集合Webservice是一个专为Java开发人员设计的整合性解决方案,旨在简化Web服务的开发、部署和消费。这个框架结合了Spring、Hibernate和Struts(SHH)这三个流行的开源技术,为构建高效、可扩展的企业级应用...

    shh整合框架实现分页

    ### SHH整合框架实现分页 #### 背景与目的 在开发Web应用程序时,为了提高用户体验并减轻服务器压力,通常需要对查询结果进行分页处理。分页不仅可以有效地展示大量数据,还能够减少每次请求的数据量,提高系统的...

    OA系统-SHH版本

    OA系统,全称为Office Automation System,是办公自动化系统的简称,是一种利用信息技术,将组织内的信息、流程、人员和任务进行集成的系统。在本案例中,我们关注的是"OA系统-SHH版本",这通常意味着这是一个经过...

    java shh2连接

    私钥文件通常以`.pem`或`.ppk`格式存储,可以使用`KeyPairGenerator`类来加载和解析。如果需要密码保护的私钥,可以通过`PemReader`类读取,并提供密码。 总的来说,ganymed-ssh2库为Java开发者提供了一种高效且...

    SHH1 jar 包

    标题提及的是"SHH1 jar 包",这表明我们要讨论的是一种特定的Java Archive(JAR)文件,名为"SHH1"。JAR文件是Java平台上的一个特殊类型的归档文件,它允许将多个类文件、相关的元数据和其他资源打包在一起,便于...

    PyPI 官网下载 | shh-0.5.0.tar.gz

    标题中的"PyPI 官网下载 | shh-0.5.0.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的软件包,名为"shh",版本为0.5.0,且文件格式为tar.gz。PyPI是Python开发者发布和分享自己编写的Python库或模块的...

    shh2所需jar包

    这里提到的"shh2所需jar包"很显然指的是Struts2、Hibernate和Spring这三大核心框架的jar包,它们构成了Java Web开发中的经典SSH(Struts2、Spring、Hibernate)集成框架。下面将详细介绍这三个框架以及它们各自的jar...

    shh 整合jar包

    2. 集成Spring:在Struts2的配置中引用Spring的DispatcherServlet,通过Spring的ApplicationContext加载Service和DAO层的bean。 3. 配置Hibernate:创建Hibernate的配置文件(hibernate.cfg.xml),定义实体类,编写...

    2014—SHH面试题

    - `load()`支持对象缓存和延迟加载,`get()`则不支持。 - `load()`加载的对象具有延迟加载特性,而`get()`加载的对象不支持。 **Struts** - **防止重复提交**:Struts 1.x中使用Token机制,保存一个唯一的Token,...

Global site tag (gtag.js) - Google Analytics