请问是事物没有生效,还是我代码有问题呢

image.png

我想知道,是我代码有问题,还是有其他问题,如果事物是生效的,我这个代码逻辑有问题吗?

看了官方文档,要求数据库必须是InnoDB,我查了一下,数据库和表使用的都是InnoDB,想知道问题出在哪里呢

评论区

JFinal

2019-05-24 22:02

单步调试进入 Db.tx 内部,看 connection.rollback() 这个回滚被执行没有

在 Db.tx 内部设置断点先

zb99908

2019-05-25 18:47

昨天和JFinal群友问了一下,说应该是因为不是一个线程导致的,因为我的这个类是new出来的,现在修改为在方法上加 @Before(Tx.class)注解,但是情况也是一样,手机端调用扣券的接口两次,这里偶尔也会扣券两次成功

zb99908

2019-05-25 18:52

我把几乎把个方法使用try{}catch包裹起来了,如果有异常会捕获,然后再抛出RuntimeException异常,这样会有影响吗,

zb99908

2019-05-25 19:42

找了一下应该是没有使用 Enhancer.enhance() 的缘故,在文档里面貌似没有看到这个类,通过搜索查出来的,不知道这种方式是否可行..... private RemoteChargeOrderServer remoteChargeOrderServer = Enhancer.enhance(RemoteChargeOrderServerImpl.class);

@Before(Tx.class)
remoteChargeOrderServer .confirmConsumeOrder(){.......}

JFinal

2019-05-26 10:48

@zb99908 Db.tx 是直接支持事务的,不而要 Enhancer.enhance()

Db.tx 是无需拦截器就支持了事务,注意看文档


还是要 单步调试进入 Db.tx 内部,看 connection.rollback() 这个回滚被执行没有

在 Db.tx 内部设置断点先

pfjia

2019-05-26 16:37

你好,能把confirmConsumeOrder方法的全部代码贴出来吗?

热门反馈

扫码入社