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/
  • 相关阅读:
    LeetCode 189. Rotate Array
    LeetCode 965. Univalued Binary Tree
    LeetCode 111. Minimum Depth of Binary Tree
    LeetCode 104. Maximum Depth of Binary Tree
    Windows下MySQL的安装与配置
    LeetCode 58. Length of Last Word
    LeetCode 41. First Missing Positive
    LeetCode 283. Move Zeroes
    《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》读后感
    删除docker下的镜像
  • 原文地址:https://www.cnblogs.com/duwei/p/4639741.html
Copyright © 2011-2022 走看看