HibernateTransactionManager (Spring) с несколькими фабриками сессий - PullRequest
1 голос
/ 02 января 2009

У меня есть реализация DAO, которая использует HibernateTransactionManager для управления транзакциями, а приложение имеет 2 фабрики сеансов. Я получаю исключение в строкеactionManager.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().

Если вы хотите предложить клудж и / или правильный способ борьбы с этим, я был бы признателен.

Ответы [ 2 ]

2 голосов
/ 02 января 2009

Используете ли вы драйверы XA для подключения к двум источникам данных, участвующим в транзакции? Иначе работать не может.

0 голосов
/ 02 января 2013

Я знаю, что это старый вопрос, но я столкнулся с подобной проблемой. Я предполагаю, что у Брэндона есть 2 фабрики сессий для различных источников данных , и он использует HibernateTransactionManager . И я считаю, что использование такого менеджера является проблемой. Из того, что я прочитал, HibernateTransactionManager не может работать с двумя разными фабриками сессий. Вместо этого он должен использовать другой менеджер, такой как менеджер транзакций JTA. Но только если ему нужен доступ к обоим источникам данных за одну транзакцию. В противном случае решение должно использовать дополнительный менеджер для каждой фабрики сессий, как упомянуто в ссылке ниже:

аналогичная проблема

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...