Hibernate中 重写toString时,关于 关联对象 的问题

首先,我准备在页面上制造一个懒加载异常看看。

public class Department {
    private Integer id;
    private String departmentName; 

 public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private Date birth;
    private Date createTime;

    private Department department;
    ....
        @Override
    public String toString() {
        return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", birth=" + birth + ", createTime=" + createTime + ", department="** + departm**ent + "]";
    }

而我从Dao中获取到employee对象并后续放入requestMap,采用的是延时加载

    public List<Employee> getAll() {
        String hql = "FROM Employee e";
        return getSession().createQuery(hql).list();
    } 

我原本打算在页面上按如下输出:

            <s:iterator value="#request.employees">
                <tr>
                    <td>${id }</td>
                    <td>${lastName }</td>
                    <td>${email }</td>
                    <td>${birth }</td>
                    <td>${createTime }</td>
                    <td>${department.departName }</td>
                </tr>
            </s:iterator> 

希望它在 执行 ${department.departName } 导致一个 懒加载异常发生。
在我没重写employee 的 toString时,它确确实实在此处发生了懒加载异常。

但当我在toString 输出 department时,。结果发生变化。
在到达页面后,既没有发生任何异常,但requestMap里的employees也没遍历出来。
,,,,
经过我debug发现,在程序执行的某个时期 系统调用了employee的toString。

也就是说如果要发生懒加载异常应该在 toString 输出 关连对象department时就会发生。。。但实际上,这里并没有导致任何懒加载异常的错误提示。。。
进而在页面上迭代输出时也啥数据没输出来。很诡异!

想更明了的理解,却只能理解到此。求助大神!

这应该是一个很常见的错误。因为我们总是习惯性的toString重写。

鉴于没个回答是靠谱的,我自己黏贴上答案:
是因为系统在运行过程中,struts2 捕获到了这个懒加载异常。并处理。
所以 得到的是 null

http://blog.csdn.net/i_do_can/article/details/49823567

你这个在一个java bean 中定义了一个对象为属性是吧!这个是多对一的情况,如果你在页面要有值的话, 你要设置级联。就是在你将当前对象通过sql
查询出来的时候,他关联的属性也一起查询。这样你的页面才可以显示关联到的对象 department