大家好:我遇到使用Hibernate + Bitronix提交事务的问题,其中对persist的调用发生在另一个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);
}
答案 0 :(得分:0)
这通常是因为您意外地实例化了两个(或更多)事务管理器。
您在一个事务管理器中开始了事务,并尝试在另一个事务管理器下执行它。确定哪个事务管理器是好的,并从项目中删除另一个事务管理器(代码/弹簧上下文/等)。
有时会发生这种情况是因为某些抽象库使用类加载器,因此调试起来很棘手。