首页 > 解决方案 > @Transactional(rollbackFor = Exception.class) 和 @Transactional(propagation=Propagation.REQUIRED) 有什么区别

问题描述

@Transactional(rollbackFor = Exception.class) 
public void foo1() {
    `/**Some Code**/`
}

@Transactional(propagation=Propagation.REQUIRED)
public void foo2() {
    `/**Some Code**/`
}

标签: springhibernatespring-boot

解决方案


@Transactional(propagation=Propagation.REQUIRED)并且@Transactional(rollbackFor = Exception.class)大致相同。和propagation=Propagation.REQUIRED默认一样。所以考虑到这一点,它们等同于@Transactional(propagation=Propagation.REQUIRED)and @Transactional(propagation=Propagation.REQUIRED, rollbackFor = Exception.class)

唯一的区别是,如果没有s,rollbackFor = Exception.class它将仅回滚RuntimeExceptions 和Errors 而不会回滚其他发生的异常。(使用 EJB 时 JEE 也是如此,并且行为也已转换为 Spring)。

这也在.@Transactional


推荐阅读