zoukankan      html  css  js  c++  java
  • Hibernate + Spring (quartz) 整合懒(延迟)加载问题

    开发项目的时候 在一个Job中执行了数据库操作, 用的是懒加载,但是如下错误

    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ......., no session or session was closed

    项目中使用 hibernate 注解的方式配置懒加载, 不是xml配置文件,

    下面列出从网上搜集到的解决方案

    1, 报如下错误

    org.hibernate.LazyInitializationException: could not initialize proxy - no Session at

    解决方法:

    在web.xml中,配置springSevlet的位置,使用org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter,代码如下:

      <filter>
            <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
            <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    2, 一般是在定时任务quartzJob中,或者Junit测试中使用懒加载出现的错误, 报如下错误

    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ......., no session or session was closed

    解决方法:

    添加事务配置注解。junit代码如下:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {
            "file:src/main/webapp/WEB-INF/applicationContext.xml",
            "file:src/main/webapp/WEB-INF/demo-servlet.xml"})
    @Transactional
    public class Job {
      ...  
    }

    3, 还有一种方法说是lazy=false, 我再 OneToMany | ManyToOne 注解中设置fetch=FetchType.EAGER 也不起作用, 不知道用配置文件的行不行

    转载请注明出处:http://duwei.cnblogs.com/
  • 相关阅读:
    [OpenGL]用OpenGL制作动画
    主管喜欢什么样的程序员
    windows下使用git管理代码,其中出现的问题的解决办法
    iOS7隐藏状态栏 status Bar
    [微信开发_02]环境搭建
    Matlab PCA 算法
    Git学习之msysGit环境支持
    Git学习之Git 暂存区
    Git学习之Git检出
    STL——(3)string容器
  • 原文地址:https://www.cnblogs.com/duwei/p/4639741.html
Copyright © 2011-2022 走看看