现有一个一对多,我配置了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);
}
上面如何才能应用延迟加载?谢谢!