spring - 具有多个数据库操作的 Spring Transactional on 方法
问题描述
我有点困惑。我虽然@Transactional
在方法上意味着所有操作或没有。
说我有这个方法:
@Transactional
public void fewDbOpeations(){
calculation1();
myDao.saveResult();
calculation2();
myDao.saveResult();
}
说calculation2()
抛出异常或我的第二次调用myDao.saveResult
出错,我看到的是即使调用成功@Transactional
后用保存结果注释的整个方法。calculation1()
那是我与数据库的第一次交互保存了我想要的记录,但第二次失败了,但我认为因为该方法@Transactinal
甚至第一次调用保存到数据库也应该回滚。
我错过了什么吗?
解决方案
@Transactional (rollbackFor = Exception.class)
public void fewDbOpeations(){
calculation1();
myDao.saveResult();
calculation2();
myDao.saveResult();
}
Try using this as well and throw Exceptions.
推荐阅读
- reactjs - Redux:for循环在reducer中工作,但过滤器没有
- flutter - 元素数据不刷新
- deep-learning - 如果我们主要使用 LSTMs 而不是 RNNs 来解决梯度消失问题,为什么我们不能只使用带有 RNNs 的 ReLUs/leaky ReLUs 呢?
- c++ - 如何在类方法中使用 gcc 选项 --wrap=symbol
- react-native - 我已经安装了@react-navigation/stack,但出现错误:错误:无法从 `App.js` 解析模块`@react-navigation/stack`:
- kotlin - Kotlin lambdas 是否与 Java lambdas 一样?
- javascript - 我如何将范围滑块值与 pst 属性相乘,然后还与其他字段一起计算,然后显示结果?
- r - 正则表达式提取期货代码处理的任何字符?
- php - SMTP 错误:421 4.7.0 连接被拒绝 - PHPMailer
- python - 如何在 django 中检查用户电子邮件地址是否有效