Управление транзакциями в вызываемой задаче - PullRequest
0 голосов
/ 25 мая 2020

В моем проекте весенней загрузки у меня есть вызываемая задача. В рамках этой вызываемой задачи я выполняю несколько операций записи в базу данных. Теперь, когда какая-либо из операций с базой данных не удается, мне нужно откатить всю транзакцию. Для этого я использовал аннотацию @Transactional. Но откат транзакции не происходит, когда операция записи в базу данных завершается неудачно.

public class MyCallableTask implements Callable<String> {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Override
    @Transactional(rollbackFor = Exception.class)
    public String call() throws Exception {
        try {
            // database op-1
            // database op-2
            // database op-3 // If failed need to roll back the whole transaction
        }catch (Exception ex) {
            logger.error("Error occurred",ex);
            throw ex;
        }
        return "COMPLETE";
    }
}
...