在hibernate3中,你可以使用回调机制把配置文件的lazy改为true;然后会在取相关联数据的时候强制加载SessionFactory factory = config.buildSessionFactory();
Interceptor it = new MyInterceptor();
session = sessionFactory.openSession(it);

解决方案 »

  1.   

    写2个方法不行吗,一个强制加载所有的child对象,一个只读取学校信息。
    要么使用OpenSessionInView模式,在渲染页面时打开session,这样就不会有lazy load error的错误了。
    配置一个filter:
    org.springframework.orm.hibernate3.support.OpenSessionInView
    代码这样写就行:
    public List getSchools() {
      return getHibernateTemplate().loadAll(School.class);
    }
      

  2.   

    错了,是:
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
      

  3.   

    用spring提供的hibernate拦截器,把主表的lazy设置为false,其他不动,还保留延迟加载,性能问题就解决了
      

  4.   

    必然如此呀. 应该做一些类似EJB SessionBean的程序, 否则效率就会很低