表设计:学生表,科目表,学生科目关系表
很显然这是个多对多的关系,在hibernate中如果我在student.hbm.xml中配置关系映射的时候,把控制劝交给了学生对象来控制,那么我要怎么才能删除一个学生对象呢?请高手指点一下  

解决方案 »

  1.   

    存在级联的时候,用hql删除有问题,
      

  2.   

    在多对多中,配inverse是没用的,inverse的控制权只是负责管理第三张表(即关系表),不管对方的,配个cascade="all"才行,如果你两边都配了cascade="all",删哪边都一样,一般是先级联后维护。例如你删学生对象,会先删掉学生,级联删除学生对应的科目,最后学生维护关系删除关系,这样删除的顺序不会违反外键约束。例如你删科目对象,会先删掉科目,级联删除科目对应的学生,最后学生维护关系删除关系,这样删除的顺序也不会违反外键约束。当然,现实中没有人会这么配,级联还是要慎用的。PS:现在都不用一对多了,因为经常数据是分页显示的,想一下每一个对象的Set关联几万条数据的恐怖情况吧,多对多就更不用说了,现在最多用用多对一,其他的就自己写hql实现吧,费点劲而已,比用户等个几十秒还出不来好。
      

  3.   

     
    在一方加上 inverse="false"也是一样的吧
      

  4.   

    这里没答案哦  
    但问题解决了 给和我遇到同样问题的人一个帖子
    http://www.javaeye.com/topic/154587