我在SSH集成项目中做订单管理那块的时候,想实现删除订单的时候级联删除下面的订单项,但是我方法都试完了总要报deleted object would be re-saved by cascade (remove deleted object from association
这个错误,我的配置文件级联设置也设置成了cascade=all了的,这到底是为什么呢,我记得当时学习hibernate的时候能实现啊,为什么现在就不能实现了,就一个简单的删除,我也试过把order和orderitem的关系解除,再删除order,那样效果是order确实删除了,但是order对应的orderitem没有删除,只是把orderitem的外键orderid设置成了空,这几天就为了这个以为简单的东西头都搞大了,在网上也搜了很多,还是没能解决我的问题,什么设置lazy=true,什么把缓存session清空,都试了的,就是不行,我就纳闷了,这是为什么,难道只有解除关系,删除了order后在依次把它下面的orderitem遍历删除?这不太麻烦了,如果真是只有这样那么设置cascade=all意义又何在呢,求高手解答!!!贴下片段配置和action代码。
order的映射文件片段:
<set lazy="true" name="orderItems" cascade="all" inverse="true">
<key column="order_id"></key>
<one-to-many class="OrderItem"/>
</set>
orderitem的映射文件片段:
<many-to-one name="order" column="order_id" class="Order" cascade="all" ></many-to-one>
action执行的方法:
public String delete(){
Order order=orderBiz.findOrderById(id);
type=order.getOrderType();
User user=order.getUser();
user.removeOrder(order);//解除与user的关系
//order.removeAll();
orderBiz.remove(order);
display();
return "ok";
}
再次恳请高手给予小弟解答,咱们共同探讨共同学习!
这个错误,我的配置文件级联设置也设置成了cascade=all了的,这到底是为什么呢,我记得当时学习hibernate的时候能实现啊,为什么现在就不能实现了,就一个简单的删除,我也试过把order和orderitem的关系解除,再删除order,那样效果是order确实删除了,但是order对应的orderitem没有删除,只是把orderitem的外键orderid设置成了空,这几天就为了这个以为简单的东西头都搞大了,在网上也搜了很多,还是没能解决我的问题,什么设置lazy=true,什么把缓存session清空,都试了的,就是不行,我就纳闷了,这是为什么,难道只有解除关系,删除了order后在依次把它下面的orderitem遍历删除?这不太麻烦了,如果真是只有这样那么设置cascade=all意义又何在呢,求高手解答!!!贴下片段配置和action代码。
order的映射文件片段:
<set lazy="true" name="orderItems" cascade="all" inverse="true">
<key column="order_id"></key>
<one-to-many class="OrderItem"/>
</set>
orderitem的映射文件片段:
<many-to-one name="order" column="order_id" class="Order" cascade="all" ></many-to-one>
action执行的方法:
public String delete(){
Order order=orderBiz.findOrderById(id);
type=order.getOrderType();
User user=order.getUser();
user.removeOrder(order);//解除与user的关系
//order.removeAll();
orderBiz.remove(order);
display();
return "ok";
}
再次恳请高手给予小弟解答,咱们共同探讨共同学习!
解决方案 »
- 集成环境IntelliJ 12发布项目出软件包 javax.servlet.http不存在
- 请问个位高手们:学习struts1需要掌握里面的哪些知识(越详细越好)
- 用了SSH框架之后,我们应该把程序的参数信息填写在哪里呢?
- 急!!关于<html:textarea/>和 <html:file />问题
- 请问谁有第三方物流项目开发的经验,请和我联系。
- <html:text>的问题,请各位大虾帮忙解决!!
- 关于RMI(远程方法调用)
- 有没有办法在form中每次离开一个文本框时都入ejb层验证?
- 各位虾帮忙了----在applet中如何将一个xml传递到下一个jsp页面中呢
- mybatis 错误 怎么显示详细的错误信息
- struts2 验证的问题
- 关于HibernateDaoSupport类的问题
将多端的传播持久性(级联)设置为最全面的全部级联:cascade="all-delete-orphan"
将维护关系的控制权交给多端:inverse="true"多端:
多端对一端采取了预先抓取策略:fetch="join"
将一端的传播持久性(级联)设置为存储、更新:cascade="save-update"
再次感谢楼上各位的回复