我有一个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/