我正在研究一个在执行任务时记录到数据库的服务层。我想确保这个日志在发生错误时不会回滚,因为我应该始终保留失败尝试的记录。下面是示例代码来解释我想要的是什么。

@Transactional(rollbackFor=Exception.class)
public void performTask()
{
    //Perform task 1
    log("task1Complete");

    //Perform task 2
    log("task2Complete");
}

@Transactional()
public void log(String message)
{
    //commit message to DB
    //This should never rollback
}

我假设这样做的方法是开始一个新事务,但我不确定如何。

最佳答案

你想使用:

@Transactional(propagation = Propagation.REQUIRES_NEW)

参见:Propagation

此外,您的 TransactionManager 必须配置为 allow nested transactions

关于java - 嵌套 Spring 事务永不回滚,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8010670/

10-15 15:35