2019-05-25 11:38

@JFinal 也就是说我现在这种乐观锁控制不了并发对吗?我先读再更新的原因是,我需要未更新前的数据,后面需要根据这个旧数据计算其他的东西。

我现在在改成select * from XXXXX lock in share mode 加共享锁,让他等待上一进程更新完成,再读数据,像悲观锁!

2019-05-25 10:55

@JFinal 我又发现我的乐观锁好像不好用,不知道是不是用错了。
数据库事务级别是REPEATABLE-READ,我在方法最后一行断点,然后让两个用户先后点击出库,两个订单是同一个商品,发现都正常出库了,我理解的应该是,第一个事务提交后,第二个提交时候应该是版本号不一致,会报错才对啊。
//取出库存
PsiInv dbInv = psiInvDao.findById(dbDetail.getLong("invId"));
//乐观锁
Integer invUpdateCount = dbInv.getUpdateCount();

dbInv.setInv(dbInv.getInv().subtract(dbDetail.getBigDecimal("qty")))
//乐观锁
.setUpdateCount(invUpdateCount)
.setUpdatePage(res.get("menu.billDocPrint"))
.update();

2019-05-25 10:13

@JFinal 我数据库加上乐观锁了,但是对于这个取单号的,为了用户不用再点击,我单独给这个单号自动生成工具,加上悲观锁。

2019-05-25 10:03

@JFinal 我有两个项目,一个用了3.3,另一个基于这个3.3被我改成maven升级到3.8了。太忙,3.8的项目没时间做,都在维护3.3

2019-05-24 12:06

俱乐部能不能整成微信群啊,QQ几万年都没用过了

2019-05-24 11:47

应该是要先getfile,你把你getpara放在getfiles后面。

2019-05-02 16:40

@JFinal 第一种方式需要在config中配置,一个项目上百service,在config中总感觉有点怪异!

2019-05-02 16:38

@JFinal 谢波总回复,顺便问一下,这种注入的方式,相比原来通过类增强方式的注入有什么优点啊。Enhancer.enhance(ServiceImpl.class);

2019-04-25 15:20

我怀疑访问你所有的页面,你浏览器上面的URL都是固定的

2019-04-12 09:12

model.put()系列方法也能用,还有一些get系列方法,方便自己该写!

2019-04-12 09:01

@zhangtianxiao 用杜导说的方法,model._setAttrs(源model或者Map)