inverse和cascade

来源:互联网 发布:财政软件 编辑:程序博客网 时间:2024/05/17 02:07

inverse,表示两个表的关系由谁维护。值为false的一方将维护这种关系。如下面多对多关系中,由HOST来维护它们之间的关系表hostalarmrule。

cascade,表示更新本表时,是否附带更新与其相关的其它表。如下面,更新HOST表,由于值为save-update,也会将rules增加或者更新到ALARMRULE表;但,删除HOST时,不会删除ALARMRULE表中数据。除非,其值为all。

    <class name="db.Host" table="host" catalog="rw">
        <set name="rules" inverse="false" table="hostalarmrule" cascade="save-update">
            <key column="host_id"/>
            <many-to-many class="db.Alarmrule" column="alarmrule_id"/>
        </set>               
    </class>

    <class name="db.Alarmrule" table="alarmrule" catalog="rw">
      <set name="hosts" table="hostalarmrule" inverse="true">
            <key column="alarmrule_id"/>
            <many-to-many class="db.Host" column="host_id"/>
        </set>
    </class>

 

 

cascade的含义

1.cascade=”none”,默认值,告诉Hibernate忽略关系。
2.cascade=”save-update”告诉Hibernate在下面这些情况导航关联:当事务提交时,当对象传给save()或update()方法并保存新初始化的瞬时实例及把更改持久到分离实例时。
3. cascade=”delete”告诉Hibernate当对象传给delete()时导航关联并删除持久实例。
4.cascade=”all”意思是save-update和delete都级联,就像调用evict和lock。
5.cascade=”all-delete-orphan”,跟cascade=”all”一样,但是除此之外,Hibernate 删除任何已经从关联(例如,从集合)删除(不再被引用)的持久实体实例。
6.cascade=”delete-orphan”,Hibernate 将会删除任何已经从关联(例如,从集合)删除(不再被引用)的持久实体实例。