1. 谁能解释一下 inverse 的来龙去脉,到底怎么回事?
2. 我有一个 foreign key 的关系,比如 A 表有个 foreign key 是 B 表的 id,怎样设置 hibernate annotation 可以使得在删除 B 表相关记录的同时,自动删除索引这些记录的 A 表中的记录?

解决方案 »

  1.   

    控制反转的问题,一般配在一对多的set节点中,取值为false和true,默认值为false,false的时候控制权限交给对方,反之是自己控制。还有一个cascade属性,控制级联删除,保存等关系的,控制权限弄好,删除一方的时候级联删除多方
      

  2.   

    inverse的真正作用就是指定由哪一方来维护之间的关联关系inverse=true的含义,由双向关联的另一方维护该关联,己方不维护该关联,只能进行查询操作
      

  3.   

    [Quote=引用 1 楼 kevin_520_kevin 的回复:]
    控制反转的问题,一般配在一对多的set节点中,取值为false和true,默认值为false,false的时候控制权限交给对方,反之是自己控制。还有一个cascade属性,控制级联删除,保存等关系的,控制权限弄好,删除一方的时候级联删除多方
        
    说的不错,inverse可以减少hql语句的写法
      

  4.   

    inverse 一般是用在hibernate 配置文件中,  实际作用是控制反转。  多应用于 多对一、或一对多、多对一 这样的双表或多表查询中。   inverse=true 就是由对方控制 关联。 否则由自己维护。   这样的的目的可以 在底层查询语句中减少SQL语句的编写量。
      

  5.   

    2. 我有一个 foreign key 的关系,比如 A 表有个 foreign key 是 B 表的 id,怎样设置 hibernate annotation 可以使得在删除 B 表相关记录的同时,自动删除索引这些记录的 A 表中的记录?一直搞不明白inverse="true"是什么意思 今天看书 上的一句很通俗的话:"校长不需要记住所有学生的名字,这样负担太重,让学生记住校长就好  我的理解是不需要主键来记录所有的外键,,而是通过外键来找主键如果像你上面的需求我认为应该是相反的,,你需要通过删除主键达到删除所以外键的效果!! 
    在主键表中 set 外键时inverse=false cascade=all