@Transactional(rollbackFor = Exception.class)
回滚事务,捕捉异常。使用在public修饰的接口或者serviceImpl上
使用场景
说明: 有一个商品表,一个商品包装表,关系是一对多的关系,即一个商品可以有多个包装。
业务: 现有一杯奶茶,有中杯,大杯两种,现在需要更新这个商品对应的包装,更新成为中杯,大杯,超大杯三种。
思路: 先获取商品信息,根据商品信息查找包装信息,然后删除包装信息(中杯,大杯),接着新增三个包装(中杯,大杯,超大杯)。
问题: 在删除包装(中杯,大杯)信息之后,新增包装(中杯,大杯,超大杯)时报错,刷新之后会出现商品对应的包装已经删除,但是没有新增。
解决方案: 为了解决上述问题,新增失败之后,老的包装还存在,即数据进行回滚,在public修饰的接口或者serviceImpl上添加@Transactional(rollbackFor = Exception.class)注解,在新增包装异常时,可以手动添加异常
throw new RuntimeException("包装新增失败");