问题是这样的,在hibernate配置配置了对象都是延迟加载的,直接从数据库中查询没问题,但是我一个对象刚保存完需要实现延迟加载行不行,代码如下:
      User user=new User();
      user.setGroupid(2);
      session.save(user);
      
      User user=session.get(User.class,new Long(user.getId()));
      user.getGroup().getName();      这时user.getGroup()为null,只有在另起一个事务才能延迟加载,这个问题能解决吗。

解决方案 »

  1.   

    1.使用opensessioniview过滤器。  2.配置一个lazy=false属性。
      

  2.   

    1.opensessioniview 是一种hibernate的开发模式,就是在容器中增加一个过滤器,每个请求都会经过这个过滤器,这个过滤器的作用就是在dofilter之前,开启事物,在dofilter之后,提交事物。
    2.在同一个hibernate的session中,默认新保存的对象都是放到这个session中的,也就是所谓的一级缓存,如果要实现在保存中就是延迟加载模式,估计不太好实现。但是反过来想,为什么楼主会有这样的需求呢?
      

  3.   

    按里说对象save只有应该由VO转换为PO,应该允许延迟加载,但hibernate这里没按理出。
      

  4.   


       为了代码的通用型,比如我一个方法,供其它方法调用,写这个方法的人,没有估计到调用这个方法实际上只传了刚保存后的对象,调用的时候就出错了。
       如果Hibernate的确没有提供在一级缓存级的延迟加载,那我就知道了,找其他方法实现。谢谢。