Hibernate - две разные транзакции будут совершены успешно - PullRequest
4 голосов
/ 22 сентября 2011

Я использую две разные базы данных.Я использую две разные сессии для удаления записей из обеих баз данных.Код ниже:

try{
  Session session1 = factory.getSession();
  Transaction trn1 = session1.beginTrn();
  session1.delete(foobar);
  trn1.commit();

  Session session2 = jbomContext.getGrahpSession();
  Transaction trn2 = session2.beginTrn();
  session2.delete(box);`enter code here`
  trn2.commit();
}catch(Exception e){
     trn1.rollback();
     trn2.rollback();
}

Здесь проблема в том, что если в транзакции произошла ошибка2, я не смог откатить транзакцию. У меня есть представление о двухфазной фиксации.но мне нужно откатить транзакцию, если исключение произойдет, обе транзакции.

1 Ответ

3 голосов
/ 22 сентября 2011

Вы не можете откатить tr1 (если фиксация tr2 не удалась), так как tr1 уже будет зафиксирован к тому времени. По крайней мере, я не вижу родного способа сделать это в спящем режиме. Вероятно, вы можете использовать распределенную транзакцию (источник данных JTA), если вы используете полнофункциональный сервер приложений Java EE или можете включить его другими способами (например, this и Spring JtaTransactionManager).

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