У меня проблема с запуском некоторого кода прямо перед откатом транзакции в моем приложении. Я хочу иметь откат при возникновении исключения, но я также хочу сохранить некоторую информацию в таблице о состоянии приложения, когда произошло это исключение, включая любые ошибки или трассировку стека.
Вот код, который у меня есть:
public void performAction(String approverId, Document document, String action) {
try {
LOG.info(String.format("routing document %s %s %s", approverId, document.getDocumentId(), action));
getDocumentService().route(approverId, document, action);
} catch (Exception e) {
LOG.error(String.format("error routing document %s %s %s", approverId, document.getDocumentId(), action));
LOG.error(e, e);
saveException(document, action, e); //this is what I want
}
}
Метод saveException() просто создает объекты и сохраняет их в таблицу.
Теперь, согласно документации Spring о транзакциях, этот откат происходит по умолчанию, где исключение является исключением времени выполнения, и я подтвердил, что откат работает правильно, но он почему-то не позволяет моему коду запускаться и сохранять нужную мне информацию или откатывать ее (?).
Любая помощь или намеки на решение приветствуются.