woaitiyu 2010-08-11 17:24
浏览 205
已采纳

hibernat延迟加载的问题,高手帮看下

现有一个一对多,我配置了lazy="true",已经设置了OpenSessionInViewFilter,但是调用时出现一些错误

现有代码如下

             Theme theme=((Users)session.get("user")).getTheme();       

    System.out.println("theme.getThemePath()="+theme.getThemePath());//此处打印出来是有值的,theme不为空

    Set set=theme.getUsers();

    Iterator it=set.iterator();

    while(it.hasNext()){

        Users user=(Users) it.next();

        String username=user.getUsername();

        System.out.println(username);                       
    }

执行报错:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.struts2.entity.Theme.users, no session or session was closed

但是我改成如下:却可以正常运行,

    Theme theme=new Theme();    
        theme.setId(1);         
    theme=facadeService.themeService.getThemeFormDB(1);

            System.out.println("theme.getThemePath()="+theme.getThemePath());

    Set set=theme.getUsers();

    Iterator it=set.iterator();

    while(it.hasNext()){

        Users user=(Users) it.next();

        String username=user.getUsername();

        System.out.println(username);                       
    }

上面如何才能应用延迟加载?谢谢!

  • 写回答

3条回答 默认 最新

  • gengmzh 2010-08-11 17:49
    关注

    Theme theme=((Users)session.get("user")).getTheme(); 此步从session中获得user,再从user中获得theme应该都不在当前session中,所以无法再通过懒加载获得theme的user
    请参考

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器