У меня есть две сущности ( 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);
}
}