你的意思是删掉父表的时候 ,希望子表中调用了该外键的数据一起删掉?你用的是什么数据库?我用PLSQL操作oracle的时候 ,在设置表关联的外键中,有个 “On Delete”的选项,设置为"cascade"。
或者在建立表的ER-win中,建立连接的时候,将Relationship->Ri Actions->Parent Delete->cascade.这样效果一样的, 你删掉父表的时候,会自动删掉字表中关联的数据。

解决方案 »

  1.   

    这个我知道的,可是我们在建表的时候不允许用Cascade选项的,Hibernate有没有提供什么好的方法?
      

  2.   

    Cascade的缺点在哪里,指点下。hibernate带的方法就不知道了,只能用笨方法,写多一次DAO操作了
      

  3.   

    hbm文件对应上 
    cascade属性设置为true,看看书,有详细设置,可以实现,简单,就一句删除,就可以实现级连
      

  4.   

    session.delete(ExpressApplication.class,new Long(14));这样是能实现级联删除。
    但是这样好象是不行的
    str = "delete from ExpressApplication e where e.expressapplicationid in(14,15)";
    Query query = session.createQuery(str);
    query.executeUpdate();
      

  5.   

    这样当然不行因该:
    str = "delete ExpressApplication where expressapplicationid in(14,15)";
    Query query = session.createQuery(str);
    query.executeUpdate();str是HSL,不是sql,
    ExpressApplication 不是表名,hibernate到时生成sql的时候,会自己加别名的
      

  6.   

    首先,hql写错了,上面已经有人指出
    其次,把cascade设置为all看看
      

  7.   

    hql我改正了,在映射文件里的cascade我设置为all,还是不能级联删除,可能只有在建表的时候用on delete cascade选项了
      

  8.   

    偶的做法很傻,先DAO操作把子表相关数据删除, 然后再删除主表数据;个人以为CASCADE设置比较好,一了百了,但是不让改HBM.XML,只好这么做了
      

  9.   

    不是飞非得建时候设置直接设置表的才有用:HBM.XML只是和表的设置对应的
    我用PLSQL操作oracle的时候 ,在设置表关联的外键中,有个 “On Delete”的选项,设置为"cascade"。