openinsessionView带来的机关

 今天处理档案删除资产没有删除的问题,
看了代码分明写着有删除的语句,跑完硬是没有删掉。先入为主,以为是openinsession组件的锅,把action中读入资产的对象手动设置为空,把mrid设置为空等等毫无作用。
后面各种尝试 发现在一个方法里面 手动调用了hibernate的clear方法,我的乖乖。。。 为啥要设置这种机关,搞了我大半天。
关键不是这个,我的强迫症复发了,为啥openinsession没有起作用。
后面测试分析了下,springmvc中 BaseFormController 中formBackingObject 中获得的 command没有从hibernate查询 new 后来自于页面(如果从h查询,估计机关会越来越庞大),
还是不放心 在onsubmit方法里面 重新读了个对象出来 ,手动修改 事务提交后果然修改到数据库。
又测试了下:
InfTerm test = infTermManager.getInfTerm(infTerm.getMrid());
   test.setName("aaaaa");
infTermManager.saveInfTerm(infTerm);
bo里面
dao.saveInfTerm(infTerm);
会抛这异常 different object with the same identifier value was already associated with the session
说明啥,说明在action里面从hibernate读出来的对象 在openinsession组件下 仍然存活在缓存中,不管传不传到bo中。

猜你喜欢

转载自firewood.iteye.com/blog/2267572