关于JFinal事务的问题

发布于 2021-12-01 04:01:52 字数 720 浏览 836 评论 2

@JFinal 你好,想跟你请教个问题:如下代码

public class ArticleController extends Controller {
@Before(Tx.class)
private void addPoint(String userId) {
Point point = new Point(); point.save();//假设这个执行成功,step 1  
Log log = new Log();log.save();//假设这个执行失败,step 2   
}


当我没有在JFinalConfig 中配置下面的代码的时候

public void configInterceptor(Interceptors me) {
    me.add(new Tx());
}

step1 的操作对数据库写入了数据,step 2的操作没有写入数据,没有发生回滚。

当我在JFinalConfig 中配置下面的代码的时候,step1 和step2 操作均没有成功。

这是怎么回事呢?


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

英雄似剑 2021-12-01 06:22:15

为了保证没问题,JFinal的事务,我基本上都是这样写的。用注解方式,在使用过程中遇到过问题,也是发现事务没有回滚。

情痴 2021-12-01 04:46:24

好奇怪啊,当我配置JFinalConfig了,就可以保证。

当我@Before(Tx.class),这样就保证不了。

而且同样的代码,当我这样写的时候,就可以保证如果出错的时候,会发生回滚。

  public boolean addPoint() {

        boolean isSucceed = Db.tx(new IAtom() {
            public boolean run() throws SQLException {
                Point point = new Point();
                boolean result1 = point.save();//修改用户积分
                Log log = new Log();
                boolean result2 =  log.save();//用户积分修改日志

                return result1 && result2;
            }
        });

        return isSucceed;
    }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文