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