0

大家好:我在使用 Hibernate + Bitronix 提交事务时遇到问题,其中对持久性的调用发生在另一个 jar 中。例如,如果我有 jarA 和 jarB。JarA 开始一个事务并调用 jarB 中的一个方法。jarB 中的方法保留其数据。最后 jarA 提交事务。但是,提交没有通过,因为 Bitronix 抛出了一个异常,说没有事务。

一些相关代码:

void doStuffInJarA() {
    BitronixTransactionManager btm = TransactionManagerServices.getTransactionManager();
    btm.begin();
    callMethodInJarB();
    btm.commit();
}
...
void callMethodInJarB() {
    MyDAO mydao = new MyDAO();
    mydao.persist(myObject);
}
4

1 回答 1

0

这通常是因为您不小心实例化了两个(或更多)事务管理器。

您在一个事务管理器中开始事务,并试图在另一个事务管理器下执行它。确定哪个事务管理器是好的,并从项目中删除另一个(代码/弹簧上下文/等)。

有时会发生这种情况,因为某些抽象库如何使用类加载器,因此调试起来可能很棘手。

于 2017-08-31T19:50:36.193 回答