- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是我在必须维护的应用程序中遇到的问题:
我有一个带有注释的头等舱 @Transactional(rollbackFor = CustomExceptionA.class)
然后在下面的代码中我调用了一个方法 @Transactional(noRollbackFor = CustomExceptionB.class)
注意:CustomExceptionA
或 CustomExceptionB
只有一个共同的祖先,即 Exception
。
当然,当我执行代码时会引发异常,它既不是 CustomExceptionA
类型也不是 CustomExceptionB
类型,也不是它们的子类。
所以问题很简单:
在这种情况下事务会发生什么情况?它会提交吗?它回滚吗?它是否保持未完成状态等待应用程序做某事(这实际上是一个可能解释此应用程序中看到的一些丑陋事情的答案)?而且:为什么?
最佳答案
Spring Framework 的事务基础结构代码默认只会在运行时、未检查异常的情况下将事务标记为回滚;也就是说,当抛出的异常是 RuntimeException 的实例或子类时。 (默认情况下,错误也会导致回滚。)从事务方法中抛出的已检查异常不会导致事务被回滚。
为什么?这很有道理:检查异常对于处理或抛出是强制性的,因此如果您从事务方法中抛出检查异常,那么框架会假设您知道自己在做什么。如果出现未经检查的异常,则可能是错误或异常处理缺陷,因此回滚事务以避免数据损坏。
关于java - Spring 交易 : rollbackfor and norollbackfor both defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18203860/
我有如下代码 public abstract class AffltTransactionService implements IAffltTransactionService { ..
当与 @Transactional 时带注释的方法抛出异常,但 rollbackFor 中没有声明任何类,交易会回滚吗? 最佳答案 默认情况下,事务会针对未检查的异常(RuntimeException
这是我的实体: @Entity @Table(name = "example") @Where(clause = "count >= 0") public class Example { @Col
在我的项目中,有一些类包含@Transactional(rollbackfor=Exception.class)。编译和打包我的项目时,会创建一个 jar 文件。但是,查看 @Transactiona
我在结合 Spring 回滚 Hibernate 更新时遇到问题。 我有以下类(class): @Service @Transactional(readOnly = true) public clas
我的服务中有几个@Transactional私有(private)方法,由于不推荐使用@Transactional而不是私有(private)方法,所以我使用org.springframework.t
我正在调用具有以下注释的服务: @Transactional(rollbackFor=ExceptionA.class) public void myMethodA(....) throws Exce
我已经使用 Spring boot 和 JPA 编写了一个示例应用程序。我正在使用 Spring 事务管理。我插入了 2 条记录,然后故意抛出异常并使用了 @Transactional(rollbac
在一些批处理作业中,我从类中调用方法,标记为: @Transactional(propagation = Propagation.REQUIRED, noRollbackFor = {
这是我在必须维护的应用程序中遇到的问题: 我有一个带有注释的头等舱 @Transactional(rollbackFor = CustomExceptionA.class)然后在下面的代码中我调用了一
@Transactional(rollbackFor = MyCheckedException.class) public void foo() { throw new RuntimeExce
我假设以下堆栈跟踪是 java 调用: B.method2 (annotated with a plain @Transactional) A.method1 (annotated with a pl
如果方法 solrJ.indexAllergenBulkSlor() 中发生任何异常,我需要回滚事务,但它不会回滚事务。我也将 AUTOCOMMIT 设置为 false。请帮忙。提前致谢。这就是我的服
在我的项目中,我使用了两个事务类。每个类都包含保存方法。当我将 @Transactional(roolbackFor=Exception.class) 注释添加到这些类中时,使用 like @Comp
我在使用 JPA 时阅读了有关 rollbackFor 属性的内容。 现在我的代码是这样的 @Transactional(readOnly = false, propagation = Propaga
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) public void abc()
@Transactional(rollbackFor = Exception.class) public void foo1() { `/**Some Code**/` } @Transact
我是一名优秀的程序员,十分优秀!