码迷,mamicode.com
首页 > 编程语言 > 详细

Hibernate + Spring (quartz) 整合懒(延迟)加载问题

时间:2015-07-12 01:42:55      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

开发项目的时候 在一个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 也不起作用, 不知道用配置文件的行不行

Hibernate + Spring (quartz) 整合懒(延迟)加载问题

标签:

原文地址:http://www.cnblogs.com/duwei/p/4639741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!