以编程方式触发运行时异常时,不会回滚事务

时间:2018-07-26 15:24:20

标签: activejdbc javalite activeweb

我不明白为什么在抛出运行时异常时调用after()的{​​{1}}函数。我期望调用DBConnectionFilter函数并回滚事务。但是真正发生的是,将调用onException()函数来提交事务并关闭数据库连接,然后调用CatchAllFilter / kind of global filter /中的after()函数。

AppControllerConfig类:

onException

PeopleController创建函数:

public class AppControllerConfig extends AbstractControllerConfig{

    public void init(AppContext context) {
        add(new CatchAllFilter(), new DBConnectionFilter("default",true));
    }
}

1 个答案:

答案 0 :(得分:0)

因此,查看ActiveWeb的代码,我可以看到该事务首先被回滚,然后被提交。我假设一旦事务回滚,驱动程序将丢弃尚未提交的数据,但是在我的测试中,MariaDB / MySQL并没有发生这种情况。换句话说,我通过一个简单的ActiveWeb项目在笔记本电脑上复制了此问题。因此,此错误已归档:https://github.com/javalite/activeweb/issues/389,并且已修复。您可以从http://repo.javalite.io/org/javalite/activeweb/中拉出一个新的2.1-SNAPSHOT版本,它应该可以工作。