一对多的cascade的问题
两张表 一张Orders表 一张Orderitem表
我是这样设置的关系:
Orders.hbm.xml:
Orderitem.hbm.xml:
当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);
这样可以与要删除的数据解除关系