我想问下,单向的many-to-one为什么不能实现级联删除? 
  例如,我有两张表,class表和student表,student对class是多对一的关系 。
  就是说我删除student的相应数据,class不应该删除相应的数据,但我一旦删除了class,就应该把所关联的student对象都一
  并删除掉。  
  在单向的'many-to-one'里实现不了(为什么?),但这样一来,cascade设置为all或者delete似乎就没有什么意义了!!!
  但是设置成
  one-to-many却能级联删除!我实在不知道是什么原因。这是其一。其二,hibernate中能设置的关系只有many-to-one,
  one-to-one,one-to-many,mant-to-many等。他们都是两个表之间的关系,如果有三个表,第一个表和第二个表是一对多,
  第二个表和第三个表是多对对,那么配置文件该怎么配啊。这三个表能实现级联删除吗???如果是4个,5个,6个表表之
  间存在关系,那么这多个表之间能实现级联删除吗???换一种方案,如果不使用hibernate,要实现多表的级联删除,我
  只到用外连接能实现。这两种方案哪个好啊?我刚开始学习hibernate,希望大哥们能帮助小弟解答心中之迷惑。不胜感激! 

解决方案 »

  1.   

    many-to-one, Class和Student之间, Student是many, Class是one...考虑数据库上的实现, 他一定是在student的表上加了一个外间class_id指向class表的id假设现在数据库中有一个班级, 这个班级中有10个学生, 你删除一个学生的时候, 自然是没有办法级联删除班级的, 如果你们学校因为要开除一个学生而撤销你们一个班的番号, 那自然是不允许的, 你们这些剩余的学生何去何从?另一个角度,  由于班级这一段不持有关联(单向关联, 学生持有关联), 所以, 自然没有办法做到级联.one-to-many又可以做到级联, 为什么呢, 因为关联Class是持有关联的. 当然, 这种关联可能是通过中间表的方式建立的, 具体没有探究过. 
      

  2.   

    默认在many端维护关联关系。要实现你想的那种操作,要加上inverse=“false”。
    ============
    但我一旦删除了class,就应该把所关联的student对象都一并删除掉。  
    未必啊这个班不存在了不是说这个班的学生都死光了哈。有可能转其他班。。