我有一个DAO实现,该实现使用HibernateTransactionManager进行事务管理,并且该应用程序有2个会话工厂。我在下面的transactionManager.commit()行上遇到异常。在与不同会话工厂相关的事务管理器中执行Hibernate操作是否会引起问题?

TransactionStatus status = transactionManager.getTransaction(def);
try{
    doHibernateStuff1();  //Does Hibernate stuff with session
                          //factory related to Tx Manager
    doHibernateStuff2();  //Does Hibernate stuff with session
                          //factory not related to Tx Manager
}
catch(DataAccessException){
 transactionManager.rollback(status);
}
transactionManager.commit(status); //Exception happens here.


异常似乎是试图再次在doHibernateStuff2();中的txManager.commit()中执行操作。

如果您想提出解决方法和/或适当的处理方法,我将不胜感激。

最佳答案

您是否正在使用XA驱动程序连接到事务中涉及的两个数据源?否则不能工作。

关于java - HibernateTransactionManager(Spring)具有多个 session 工厂,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/407492/

10-16 11:03