问题描述
在多对多延迟加载的时候,获取用户对对应的角色时发现延迟加载无作用,已经配置了OpenSessionInViewFilter,居然没用。从开启tomcat后从页面上进去action然后进入Service这时候延迟加载有作用,正常的。但是我在spring中配置init-method执行某个方法时延迟加载就失效了,提示:noseession,session被关闭之类的话。在得到session的时候如果用getCurrentSession,就会报这种错误,改成openSession()后全部正常,但是这样做肯定不可以,太影响性能。这可怎么办?碰到这么诡异的问题。
解决方案
解决方案二:
用这个方法:getCurrentSession,那以后所有的session要你自己去处理,如果你没关,那就没有关了。
解决方案三:
无代码无真相
解决方案四:
User类:publicclassUserextendsIdEntityAUTO{//其他省略privateList<Role>roleList=newArrayList<Role>();@ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)@JoinTable(name="user_role",joinColumns={@JoinColumn(name="userid")},inverseJoinColumns={@JoinColumn(name="roleid")})}//Role类publicclassRoleextendsIdEntityAUTO{//其他略privateList<User>userList=newArrayList<User>();@ManyToMany(mappedBy="roleList")publicList<User>getUserList(){returnuserList;}}<beanid="hahaha"class="com.util.web.LoadResc"init-method="load"></bean>load方法publicvoidload(){List<User>userList=userServiceImpl.findAllUser();for(Useruser:userList){user.getRoleList;//这句的时候就报session已经关闭}}web.xml中已经在最开始就配置了:hibernateOpenSessionInViewFilter
解决方案五:
init-method是初始化bean的时候调用的,hibernateOpenSessionInViewFilter对他来说没什么作用。
解决方案六:
hibernate的问题吧,延迟加载。
解决方案七:
该回复于2010-12-07 13:28:25被版主删除
解决方案八:
不知道楼主是用hibernate哪个版本的,是2.5的还是3.0以上的,好象那个getCurrentSession()是hibernate3.0以上才提供了实现!具体不清楚,详细的自己可以去查下资料!
解决方案九:
难度不小~
解决方案十:
引用7楼goodlucktomyself的回复:
不知道楼主是用hibernate哪个版本的,是2.5的还是3.0以上的,好象那个getCurrentSession()是hibernate3.0以上才提供了实现!具体不清楚,详细的自己可以去查下资料!
我用的是3.3.2~~好像是的,通过spring启动openviewfilter就不起作用了,这下该怎么办?
解决方案十一:
学习下
解决方案十二:
呵呵,学习了
解决方案十三:
引用1楼licip的回复:
用这个方法:getCurrentSession,那以后所有的session要你自己去处理,如果你没关,那就没有关了。
可以考虑下的session这个东西本来就不好用