事务未正确关闭引起的HIBERNATE SESSION不能正确关闭
问题现象:
第一个用户投票不成功后,换第二个用户登录,然后投票,投票成功,投票数加1(由14票,变更为15票)。这时刷新页面发现投票数为未投票前的数(14票),再刷新又为更新后的值(15票),不停的刷新,投票数会在新旧值(14与15)之间交替出现。
查看数据库中的表,值是最新的15票。
通过跟踪程序发现,当投票不成功时事务没有正常关闭。代码如下:
TransactionStatus status = [color=Red]beginTransaction();[/color] try { if (list != null) { for (int i = 0; i < list.size(); i++) { if (((JczdTpWt) list.get(i)).getNRybh() == userid) { return "fail";<!-- [color=Red]问题就在这 事务没有正常关闭就退出了[/color]。--> } } } JczdDa jczdDa = dao.getDaById(daid); jczdDa.setNTpsl(jczdDa.getNTpsl() + 1); dao.updateDa(jczdDa); 。。。省略 [color=Red]getTransactionManager().commit(status);[/color]