gpt4 book ai didi

java - 与注释为 @Transactional 的方法的调用者进行通信

转载 作者:行者123 更新时间:2023-12-01 11:33:03 28 4
gpt4 key购买 nike

我有一个正在使用 Spring @Transactional 注释的方法:

    @Transactional
public void persistAmendments(int _cutsheetId) {
...
}

如果发生强制回滚此事务的情况,persistAmendments() 的调用者将如何知道这一点?我希望我的调用代码能够适本地处理这种情况。是否有特殊的异常被抛出堆栈?

最佳答案

调用持久层的方法将捕获任何 RuntimeExceptions,这将让它知道您在保存数据时发生了错误。 Spring 默认情况下会回滚任何抛出 RuntimeException 的事务。这是我的意思的一个简短示例。

修改服务

@Service
public class AmendmentService {

@Autowired
private AmendmentRepository amendmentRepository;

public boolean persistAmendments(int _cutsheetId) {
boolean persistSuccessful = true;
try {
amendmentRepository.persistAmendments(_cutsheetId);
} catch (RuntimeException e) {
persistSuccessful = false;
}
return persistSuccessful;
}
}

修正存储库

@Repository
public class AmendmentRepository {

@Transactional
public void persistAmendments(int _cutsheetId) {
//attempt to persist
}

}

关于java - 与注释为 @Transactional 的方法的调用者进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30266709/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com