ssh框架的web开发中struts2的问题,求解决


struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


struts2
/*


closeSession
com.oracle.xiaomi.filter.SessionCloseFilter


closeSession
/*


我在做struts2和hibernate整合的时候写了一个商品更新功能。更新完以后返回商品列表商品,发现商品更新后的数据不正常,但是数据库里的数据正常,刷新商品页面更新的商品数据会一直发生变化,再次更新会报a different object with the same identifier value was already associated with the session这个异常。
我感觉是更新后session没关闭,所以显示数据混乱,拿到的有session缓存中的数据,但是过滤器中session我已经关闭了。后来我把关闭session的过滤器写在了struts2核心过滤器的上面,就好了,也不会出现数据混乱和报异常了。现在很纠结,这和过滤器的执行顺序有关吗,同学的就不会出现问题。求大牛[code=python][code=text][/code][/code]

2个回答

可能你需要仔细检查下你的hibernate的配置文件 有没有开启二级缓存 和同学的对比一下有没有少写什么东西 这个应该是你的hibernate的问题

你写在自定义的过滤器中有可能没有关闭掉seeion,但是Struts中他是任何操作他都会访问到核心过滤器。就好比如:比如说有个类你已经在数据库中查询出来了一个对象 A,但是后来(当这次session还未关闭,一般都是在同一个方法里)你又创建了一个对象B他和A的主键值一模一样,当你要保存B的时候hibernate是不允许两个主键相同的对象在同一个session里面的,所以最根本的解决办法就是,当你需要修改这个对象的时候只要修改A的相应的值然后save保存就可以了,没必要再创建B再去保存B.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!