第一步,在方面上面加上@Transactional注解
@Transactional
public void saveDishWithFlavor(DishDto dishDto) {
//保存菜品的基本信息到dish表
this.save(dishDto);
//菜品id
Long dishId = dishDto.getId();
//菜品口味
List<DishFlavor> flavors = dishDto.getFlavors();
flavors = flavors.stream().map((item) -> {
item.setDishId(dishId);
return item;
}).collect(Collectors.toList());
//以下代码等同于上面的代码,用forEach更简洁
//flavors.forEach(item -> item.setDishId(dishId));
//保存菜品口味到dish_flavor表
dishFlavorService.saveBatch(flavors);
//清理分类下面的菜品的缓存数据
String key = "dish_" + dishDto.getCategoryId() + "_1";
redisTemplate.delete(key);
}
第二步:在程序启动类上加上@EnableTransactionManagement注解