有一张订单表:orders 里面有主键ordersId一张订单详细表:orderDetails 依赖orders表,也就是多对一关系,。
hibernate自动映射出来了分成两个类。一个是OrderDetail 和OrderDetailId 类,OrderDetailId 里面有orders类的对象
现在用hibernate删除的时候。有点问题了。。
我是这样做的,,
Orders orders=(Orders) session.get(Orders.class, 2);
OrderDetailId odi=new OrderDetailId();
odi.setOrders(orders);
OrderDetail od=new OrderDetail();
od.setId(odi);
session.delete(orders);
可是结果是sql错了,外键冲突!无语中。。试着删除session.delete(odi)
提交后能运行到最后。只是没有效果
在线等答案

解决方案 »

  1.   

    把many-to-one配置成级联删除吧
      

  2.   

    假如配置的话是不是在orders类那里配置?
    还是在OrderDetail那里配置?
      

  3.   

    好像不行。。我在orderdetail那里设置了cascade="all"
    可是最后却显示不能读取这个xml文件
      

  4.   


    Orders orders=(Orders) session.get(Orders.class, 2);
    OrderDetailId odi=new OrderDetailId();
    odi.setOrders(orders);
    OrderDetail od=new OrderDetail();
    od.setId(odi);            //你这里又“多端”管理关联关系
    session.delete(orders);   //你这里删除的是“一端”按照以上楼主的代码,应该在“一端”设置级联删除,然后将管理关系交给“多端”。试试下面的配置:在“orderDetails ”端(多端):<many-to-one name="" column="" class=""/>
    </set>
    在“orders”端(一端):<set name="" inverse="true" cascade="all"> //注意:设置了inverse属性和cascade属性
        ……
    </set>