- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,使用 Spring/JPA Hibernate 面临一个奇怪的问题。
我在服务类 methodA()
和 methodB()
中有两个方法
@Transactional
methodA(){
for(){
methodB();
}
some other database operations.
}
@Transactional
methodB(){
database Update/Insert Operations.
save();
}
如上所述,我在循环中从 MethodA 调用 methodB。如果循环中的任何操作失败或循环外的数据库操作失败,我预计事务会回滚,因为 methodA()
本身就是事务。
但是我遇到了奇怪的问题,我看到数据在 methodB()
完成后立即提交到数据库,并且即使在 methodA()
抛出异常后也不会回滚。
我还尝试从methodB()
中删除transational,也尝试了propogation = NESTED/REQUIRED/MANDATORY
。但似乎没有任何作用。
最佳答案
这不是使用 Spring 时事务的工作方式。事务方法必须从外部调用,而不是在其他方法内调用。原因是,在您的情况下,Spring 无法通过 AOP 代理应用事务,因为对 methodB 的调用直接来自 methodA
并且 Spring 无法在 methodB< 之前应用事务方面
被调用。欲了解更多信息,请查看here在“了解 AOP 代理”部分以及 here在第 10.5.1 节中
关于java - Hibernate @Transactionl 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22370271/
您好,使用 Spring/JPA Hibernate 面临一个奇怪的问题。 我在服务类 methodA() 和 methodB() 中有两个方法 @Transactional methodA(){
在方法上使用 @Transactional 和不使用它有什么区别? 我写了一些简单的测试,但似乎没有什么区别。 我想学习如何使用 spring 和注解来管理事务。 谢谢大家。 最佳答案 如果将@Tra
我是一名优秀的程序员,十分优秀!