0

我在 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:无法初始化代理 - 没有会话

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

4

2 回答 2

0

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

于 2013-08-19T17:36:20.573 回答
0

确保您的代码在会话关闭之前调用学生的访问器方法。或者如果您使用弹簧和事务,那么它必须在您的会话处于活动状态的范围内。

于 2013-08-19T17:40:03.260 回答