springboot-jpa
本人觉得还是最简单粗暴的就是干掉数据,删除起来真的是风雨无阻,基本没有坑。
但想想还是把自己的测试过程分享出来,就当纪念自己的劳动过程吧。。。
直接上代码:
- 控制层代码
public void cascadeUpdate(Integer id){
// User user = userService.findById(id);
// userService.deleteObject(user);
Address address = addressService.findById(id);
addressService.delete(address);
}
我是在维护端发起的删除操作,级联属性设置为Cascade.ALL,处理的赶紧利落,三张表的数据都是轻松干掉。
结果如下:
级联更新的原理我理解的就是先查出原始数据,然后再将新数据保存替代原数据,和删除一样,没有出现任何问题,测试轻松实现让我总是觉得哪不对劲,但是就是实现数据的更新了。。。先上代码:
public void cascadeUpdate(Integer id){
//这里利用的是多对一,address是一方,user是多方
Address address = addressService.findById(id);
if(null != address){
address.setAddressName("北京中关村口");
List<User> users = address.getUsers();
if(users.size()>0){
users.get(0).setName("赵红");
users.get(1).setName("张小明");
}
}
addressService.save(address);
}
输出结果如下:
- 无论从维护端还是被维护端发起的删除或更新操作都是成功的,但是在查询文档的过程中发现,如果维护端的表结构中设置了被维护端的字段外键,最好不要再被维护端设置级联属性,由于本人未在实际业务中使用,只是在自己的测试代码中模拟实现,如果涉及到实际业务,还需谨慎使用。