【问题标题】:Uncommitted transaction using Hibernate + Bitronix使用 Hibernate + Bitronix 的未提交事务
【发布时间】:2015-06-17 17:15:32
【问题描述】:

大家好:我在使用 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);
}

【问题讨论】:

  • 能否请您发布您的错误日志?
  • 嗨:这里发生错误:BitronixTransaction t = tm.getCurrentTransaction(); t.commit(); Java 在 t.commit() 处抛出 NPE。抱歉,我不能再描述了。

标签: hibernate transactions bitronix


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2011-04-30
    相关资源
    最近更新 更多