inverse和cascade两个根本不是一个概念,cascade是级联保存更新删除关联表中的内容,inverse为true的话就是把关联负责权交给对应的关联表

解决方案 »

  1.   

    A类和B类如果是组成关系,即B是A的一部分,那么使用all-delete-orphan。
      

  2.   

    TJW_7(龙泽风) 说的正解。楼主试验一把就什么都清楚了。
      

  3.   

    天,这两百分好赚哦,cascade是及联操作,inverse是双向一对多关系是反向控制开关,如果你要使用双向一对多,就把inverse设置true,cascade可选all\none\save-update\delete,分别对应不同的情况下进行及联操作,
      

  4.   

    我来说说关于inverse的,是从官方翻译过来的:这个表示Hibernate需要在两个实体间查找关联信息的时候,应该使用关联的另外一端 - Person类。
    inverse映射参数究竟表示什么呢?对于你和对于Java来说,一个双向关联仅仅是在两端简单的设置引用。然而仅仅这样 Hibernate并没有足够的信息去正确的产生INSERT和UPDATE语句(以避免违反数据库约束), 所以Hibernate需要一些帮助来正确的处理双向关联。把关联的一端设置为inverse将告诉Hibernate忽略关联的 这一端,把这端看成是另外一端的一个镜子(mirror)。这就是Hibernate所需的信息,Hibernate用它来处理如何把把 一个数据导航模型映射到关系数据库表定义。 你仅仅需要记住下面这个直观的规则:所有的双向关联需要有一端被设置为inverse。在一个一对多(one-to-many)关联中 它必须是代表多(many)的那端。而在多对多(many-to-many)关联中,你可以任意选取一端,两端之间并没有差别。