В моем проекте загрузки Spring я реализовал следующий метод службы:
@Transactional
public boolean validateBoard(Board board) {
    boolean result = false;
    if (inProgress(board)) {
        if (!canPlayWithCurrentBoard(board)) {
            update(board, new Date(), Board.AFK);
            throw new InvalidStateException(ErrorMessage.BOARD_TIMEOUT_REACHED);
        }
        if (!canSelectCards(board)) {
            update(board, new Date(), Board.COMPLETED);
            throw new InvalidStateException(ErrorMessage.ALL_BOARD_CARDS_ALREADY_SELECTED);
        }
        result = true;
    }
    return result;
}
внутри этого метода я использую другой метод службы, который называется update:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public Board update(Board board, Date finishedDate, Integer status) {
    board.setStatus(status);
    board.setFinishedDate(finishedDate);
    return boardRepository.save(board);
}
Мне нужно внести изменения в базу данных в методе update независимо от транзакции владельца, которая запущена в методе validateBoard. В настоящее время любые изменения отскакивают назад в случае каких-либо исключений.
Даже с @Transactional(propagation = Propagation.REQUIRES_NEW) он не работает.
Как правильно сделать это с помощью Spring и разрешить вложенные транзакции?
