采坑系列之JPA级联删除和更新

本文介绍了 SpringBoot 结合 JPA 实现级联更新与删除的方法,并通过示例代码展示了如何在控制层进行操作。文章强调了在实际业务中使用级联属性时需谨慎。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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);
    }

输出结果如下:
这里写图片描述

  • 无论从维护端还是被维护端发起的删除或更新操作都是成功的,但是在查询文档的过程中发现,如果维护端的表结构中设置了被维护端的字段外键,最好不要再被维护端设置级联属性,由于本人未在实际业务中使用,只是在自己的测试代码中模拟实现,如果涉及到实际业务,还需谨慎使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值