Откат предыдущей транзакции при сбое текущей транзакции в Spring RepositoryEventHandler - PullRequest
0 голосов
/ 26 марта 2020

У меня есть две сущности ( AB C и PQR ), и происходит операция обновления. Обновление сущности AB C выполняется в @ RepositoryEventHandler классах ( ABCEntityHandler ) и после обновления сущности AB C мне нужно, чтобы сущность PQR была обновляется на основе информации об объекте AB C. Эта часть выполняется в методе ABCEntityAfterSave , и теперь я реализую механизм отката, при котором сущность AB C должна быть откатом, если при сохранении сущности PQR произошел сбой в updatePQRИнформация метод. Я пробовал с несколькими подходами с аннотацией @Transactional, но здесь не сработало. Любая идея, как это сделать в классе RepositoryEventHandler с помощью пружины

PS - База данных не реляционная. Его mon go DB и обязательно иметь 2 транзакции. не может быть сделано в течение 1 транзакции

@RepositoryEventHandler
public class ABCEntityHandler {

    @Autowired
    private PQRService pqrService;


    @HandleBeforeSave
    public void ABCEntityBeforeSave(ABC abc) {
       log.debug("before save ABC");
    }

    @HandleAfterSave
    public void ABCEntityAfterSave(ABC abc) {
       log.debug("after save ABC");

       pqrService.updatePQRInformation(abc);
    }
}

=============

@Service
public class PQRService {

  @Autowired
  private PQRRepository pqrRepository;

  public updatePQRInformation(ABC abc) {
    PQR pqr = new PQR();
    pqr.setName(abs.getName());
    pqr.setAge(abs.getAge());

    // expect to thrown an runtime exception here
    pqrRepository.save(pqr);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...