我有一个@Component
层,它调用两个函数。
我强迫我的第二个函数返回一个异常,但它的第一个事务没有回滚。
此服务层带有@Transactional
@Transactional
class {
void updateMessageResult() {
Message updatedMessage = messageService.updateResult(message, messageQueueDto);
messagePublisher.publishEvent(updatedMessage);
}
}
在publishEvent
中,它被迫抛出RuntimeException
public void publishEvent() {
throw new RuntimeException();
}
更新:我尝试了建议,但仍然无法回滚
答案 0 :(得分:1)
您是否在项目中启用了事务管理?
例如,使用 @EnableTransactionManagement
注释您的配置类另一件事:默认情况下,使用@Transactional进行事务回滚仅适用于RuntimeException(或其子类)。确保您引发的异常是RuntimeException
答案 1 :(得分:0)
在要进行交易的方法级别上使用 @Transactional 批注。应该可以。
答案 2 :(得分:0)
对不起,您发布了错误的代码。我只是键入代码,而不是复制粘贴代码。
答案是我忘记为该方法添加访问器(或公共)。
谢谢!