大家好:我在使用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);
}发布于 2017-09-01 03:50:36
这通常是因为您意外地实例化了两个(或更多)事务管理器。
您在一个事务管理器中开始事务,并尝试在另一个事务管理器下执行它。确定哪个事务管理器是好的,并从项目中删除另一个(代码/spring上下文/等)。
有时,这是由于一些抽象库使用类加载器的方式造成的,因此调试起来会很棘手。
https://stackoverflow.com/questions/30898169
复制相似问题