Hibernate如何设置一对多cascade

一对多的cascade的问题
两张表 一张Orders表 一张Orderitem表
我是这样设置的关系:
Orders.hbm.xml:

        lazy="false"
        inverse="false"
        cascade="all" >
       
       

Orderitem.hbm.xml:

        name="orders"
        class="hibernate.Orders"
        cascade="all"
        outer-join="false"
        update="false"
        insert="false"
        column="order_id"
        not-null="true"/>

当cascade设置为all时 保存和更新数据没问题
假设Orders表中有一行数据 Orderitem表中有与其相关联的两行数据 id分别为1和2
当只需要删除id为1的那行数据 其他数据不需要修改时
因为我cascade设置为all
所以会把Orders表中那一行数据也删除

如果我把cascade设置为save-update 就会报这样的错
deleted object would be re-saved by cascade (remove deleted object from associations): 2, of class: hibernate.Orderitem

如果我把cascade设置为delete 又会把2个表中所有的数据全部删除
并且保存和更新的时候不会级联保存或更新

我想达到的效果是当保存和更新的时候能够级联同步保存或更新
当只要删除Orderitem表中一行数据的时候 并不删除与他关联的Orders表中对应的数据

这里到底要如何设置啊?
或者如何编写删除的代码啊?

在删除的方法中加入这样几句代码就可以了

Orders od=(Orders)session.load(Orders.class,item.getOrderId());
od.getOrderItems().remove(item);

这样可以与要删除的数据解除关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值