2013-04-22 4 views
0

Мне явно нужна помощь по откату транзакции. Я работаю над приложением Spring/JPA/Hibernate.Откат с зацепом RuntimeException

Для меня RuntimeException, даже если они пойманы, откатываются назад. Я выводил это с некоторыми тестами (что я не могу сказать здесь, к сожалению, поскольку у меня их больше нет) и чтения.

Но я испытываю другое поведение со следующим кодом:

public class Service implements IService { 

    @Transactional 
    public void test() 
    { 
    // ... 
    try { 
     throw new RuntimeException(); 
    } catch (RuntimeException re) { 
    } 
    foo.setBar(barValue); 
    this.fooDao.save(foo); 
    } 
} 

После выполнения этого от контроллера, изменение на bar параметра присутствует в моей базе данных, которая означает, что сделка не была rollbacked.

Теперь вопрос

Ли поймала RuntimeException приводит к откату или я ошибаюсь?

+0

Возможно, я просто не понимаю, что здесь происходит, но не нужно ли вводить код отката внутри блока catch? –

ответ

0

Если вы поймаете исключение, транзакция не будет отменена. Если ваш метод выходит из-за исключения, транзакция будет отброшена.

+0

Спасибо, у вас есть идея, почему в каком-то случае, даже если было обнаружено исключение runtimeexception, это приводит к откату? – DessDess

+0

Код может вызвать другое исключение. –

+0

Это было точно не так, поэтому я буду расследовать благодарность – DessDess

 Смежные вопросы

  • Нет связанных вопросов^_^