手动抛出异常让事务回滚要注意的地方

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rocklee/article/details/88760037

     很久没写spring应用, 再捡回来忘得差不多了, 总是想着用throw new exception("...")来让事务回滚,  但实际测试并未如愿, 虽然会触发异常但还是会更新数据库, 花了半天时间未果, 后来翻查以前写下的webapp, 发现并不能用throw new exception来让事务回滚, 事务回滚默认的exception是runtimeexception!

    所以,应该写成:

@Transactional
public void testUpdate() {
       .....		
		if (满足你的回滚条件) {
			throw new RuntimeException("错误信息");
		}
}

而如果除了回滚, 还需要带额外一些错误信息, 那可以自定义Exception,并在rollbackFor指定新的Exception类型, 详细请参考 https://blog.csdn.net/rocklee/article/details/52857004 

猜你喜欢

转载自blog.csdn.net/rocklee/article/details/88760037