当前位置: 首页 > 面试题库 >

是否指定@Transactional rollbackFor还包含RuntimeException

牟黎昕
2023-03-14
问题内容
@Transactional(rollbackFor = MyCheckedException.class)
public void foo() {
    throw new RuntimeException();    
}

该事务是否会回滚,或者是否还需要在批注中包含RuntimeException.class?


问题答案:

无需包括RuntimeExceptionrollbackFor列表中。即使您不提及它,它也会处理。

我已经尝试了jdbcTemplate:-

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = MyException.class)
public void updateSalary(final int increment){
    jdbcTemplate.update("update EMPLOYEE set emp_salary = emp_salary + ?", increment);
    throw new RuntimeException("update exception");
}



输出:
插入后:
1迪帕克35000
2酸奶35000
3阿迪亚35000

更新异常
更新后
1迪帕克35000
2酸奶35000
3阿迪亚35000


 类似资料:
  • 检查当前进程的参数是否包含指定的标志。 使用 Array.every() 和 Array.includes() 来检查 process.argv 是否包含所有指定的标志。 使用正则表达式来测试指定的标志是否以 - 或 -- 作为前缀并相应地添加前缀。 const hasFlags = (...flags) => flags.every(flag => process.argv.includes

  • 想知道什么在什么不在吗?Puppet 的 in 可以帮你, 如下面的表达式: if "foo" in $bar 如果 foo 是 $bar 的子串,表达式的值为 true。 如果 $bar 是个数组,并且 foo 是这个数组中的一个元素,表达式的值为 true。 如果 $bar 是一个哈希,foo 是 $bar 的一个键值,表达式的值为 true。 操作步骤 在你的配置清单中添加如下代码: if

  • 问题内容: 我需要确定数组中是否存在值。 我正在使用以下功能: 上面的函数总是返回false。 数组值和函数调用如下: 问题答案: 你可以像这样使用它:

  • 本文向大家介绍JavaScript判断数组是否包含指定元素的方法,包括了JavaScript判断数组是否包含指定元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript判断数组是否包含指定元素的方法。分享给大家供大家参考。具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 用法: 希望本文所述对大家的javascri

  • 一年前,我问过如何根据另一个属性的值设置模式对象的类型?我有一个很好的答案,从那以后我一直在使用这个模式。 现在,源数据已经更改——在以下情况下,模式会失败: 源数据包含许多属性,但其中只有两个与此问题相关:“键”和“值” - “值”的类型取决于“键”的值 - 所以我的问题是,我如何允许这两个选项中的一个?我已经尝试了我能想到的任何组合,但是悲惨地失败了。Json.Schema.JSchema无法

  • 本文向大家介绍检查Java ArrayList是否包含给定项,包括了检查Java ArrayList是否包含给定项的使用技巧和注意事项,需要的朋友参考一下 java.util.ArrayList.contains()方法可用于检查Java ArrayList是否包含给定项。此方法具有单个参数,即测试了其在ArrayList中是否存在的项目。如果该项目在ArrayList中存在,则返回true;如果