实际操作:
A,B两个用户,操作两笔订单出库,这两笔订单中的商品时同一个。
1、我先在service中断点,然后A用户点击出库按钮,这时事务没有提交,库存也没有更新到数据库。
2、B用户选择他的订单,也点击出库,这时候B也进入这个出库方法。
我的库存更新是通过乐观锁控制的,mysql事务级别是REPEATABLE-READ可重复读,这时候我的库存更新乐观锁是失效的,库存会只扣减B用户订单数。
我的想法:两个用户应该是两个事务,在第一个A事务提交之后(XXX.update()应该会加上排他锁),B过来的第二个事务,这时候应该由于版本号不一致,报错才对。
PsiInv dbInv = .findById(invId)BigDecimal beforeQty = dbInv.getInv()dbInv.setInv(dbInv.getInv().subtract(moveQty)) .setUpdateCount(dbInv.getUpdateCount()) .update()
项目:JFinal