我在hibernate中进行一对多级联删除时,发现删除多方的sql语句竟然为:
delete from WOLF_LOG_DATE where id=? (id为记录id)
而非:
delete from WOLF_LOG_DATE where log_id=? (log_id为外键id,即一方的id)
这样的话,多方有多少条相关联的记录就要执行多少条delete!!!
有没有碰到过这种情况的?是不是哪儿需要配置一下?

解决方案 »

  1.   

    如果删除一方的一个对象,则与它关联的所有多方对象应该都删除。
    如果不需要级联,可设置cascade="none"
      

  2.   

    hibernate就是这样   如果你删除主表中的数据就要把子表中和听关联的所有数据都要删除
      

  3.   

    我的问题是,为什么他需要一条一条的删,而不是用一条sql语句。稍微修改一下where的约束是可以达到的。
      

  4.   

    果删除一方的一个对象,则与它关联的所有多方对象应该都删除。 
    如果不需要级联,可设置cascade="none"1楼正确
      

  5.   

    如果你在删除一条主表的数据是只是仅仅删除主表的数据而不删除关联的数据,则在set集合中inverse设置为false,即自己来管理关联关系;但是如果你想把和主表关联的字表数据也删除,则加cascade="delete"