English 中文(简体)
HibernateTransactionManager(Spring) 带有多个 Session 工厂
原标题:
  • 时间:2009-01-02 17:29:28
  •  标签:

我有一个使用HibernateTransactionManager进行事务管理的DAO实现,应用程序有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驱动程序?否则是不能工作的。

我知道这是一个老问题,但我遇到了类似的问题。我预计Brandon有2个不同数据源的Session工厂,并且他正在使用HibernateTransactionManager。我相信使用这样的管理器是问题所在。根据我所读,HibernateTransactionManager无法处理2个不同的Session工厂。相反,他应该使用不同的管理器,如JTA事务管理器。但前提是他需要在一个事务中同时访问两个数据源。否则,解决方案应该是为每个Session工厂使用额外的管理器,就像下面提到的链接中一样:

类似问题





相关问题
热门标签