Как управлять несколькими транзакциями в одном транзакционном методе в Spring? - PullRequest
0 голосов
/ 30 октября 2018

У меня есть следующий код

@Transactional
public void f1() {
    try {
        lock();
        //some logic
    } catch (Exception ex) {
    } finally {
        releaseLock();
    }


@Transactional(propagation = Propagation.REQUIRES_NEW)
public void lock() {
     repository.doLock();
   }


@Transactional(propagation = Propagation.REQUIRES_NEW)
public void releaseLock() {
         repository.doReleaseLock();
    }

Я хочу иметь следующее поведение: если что-то пойдет не так в , будет снята некоторая логика блокировки. В отладке и в логах я вижу очень странное поведение. Код рабочего процесса никогда не посещают, наконец.

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

1 Ответ

0 голосов
/ 30 октября 2018

Простой ответ, ваш код должен сохранять только (с оператором throws):

 @Transactional
 public void f1() {    
    //some logic
 }
...