如果一个checked异常抛出,事务是不会回滚的,而一个unchecked异常抛出,事务是会回滚的。
比方说,你往数据库里插一条数据,在插入数据的函数里抛出Exception , 插入数据会成功,而你若是抛出RuntimeException ,事务会回滚,插入数据失败。
当你需要改变这一现状时,需要这样做:
你需要将RuntimeException异常设置事务不回滚。
将@Transactional(onRollbackFor=RuntimeException.class)置于插入一条数据的函数上面。反之亦然。