static Employee find(int id) {
Session s = null;
try {
s = HibernateSessionFactory.getSession();
Employee emp = (Employee) s.get(Employee.class, id);
//第一条 System.out.print(emp.getDepart());
//第2条 emp.getDepart();
return emp;
} finally {
if (s != null) {
s.close();
}
}
}
上面注释的2条代码,单用第一条时,2条SQL语句都出来了
单用第2条时,只出来一条SQL语句,剩下的一条懒加载,2条代码只是差个输出,为什么会出现不同结果

解决方案 »

  1.   

    1条你是打印出对象信息,你应该有覆盖toString方法,要不应该也是不会的!我猜是你覆盖了toString方法,把对象的相关内容都打印出来了,所以执行了后,把对象所以信息都加载了,包括集合!所以有2条sql,2条只是执行了查询,所以会出1条
      

  2.   

    System.out.print(emp.getDepart());print函数调用了Depart类的toString()
    加载了Depart对象
      

  3.   

    我的depart类没有写toString的方法,是从obj继承下来的toString吧