Hibernate LazyInitializationException:无法初始化代理 - 没有Session

时间:2013-08-19 16:14:07

标签: java hibernate

我在Hibernate中映射了这样的结构(使用XDoclet,因为它是旧项目):

public class Student {
     String name;
     int age;
     School school;    //many to one
     // ...
}

public class School {
     String name;
     // ...
}

我想打印学生的学校名称(使用学生对象),如下所示:

System.out.println("School name: " + student.getSchool().getName());

但我得到了:

  

org.hibernate.LazyInitializationException:无法初始化代理    - 没有会话

我不想更改映射文件(因为我不是这个的作者),那么这个问题的其他解决方案是什么?

2 个答案:

答案 0 :(得分:0)

你是如何阅读学生对象的?
因为如果您在返回之前从关闭会话的方法中阅读Student,则访问@Lazy集合会生成LazyInitializationException。 我建议你检查你的会话生命周期。

答案 1 :(得分:0)

确保您的代码在会话关闭之前调用学生的访问者方法。或者在您使用spring和transactions的情况下,它必须在您的会话处于活动状态的范围内。