inverse="true
2010-08-26 04:35
316 查看
inverse="true"表示不对双方关系进行控制,一般使用在一对多和多对多关系映射中.
在一对多中,inverse="true"会加入到一的一方的set集合配置中,因为一对多里,关系是由多方的外键进行控制的,一方无法控制关系,因为要这样配置.
在多对多关系中,双方关系应该是由中间表进行管理,但由于多对多不会生成中间表的映射,因此对中间表(也就是关系)的控制需要由多对多的双方或其中的某一方来完成,当某一方不希望对中间表进行控制时,可以把这个配置加入,表示自己不对关系进行控制,而交给对方进行控制.
<set lazy="extra" inverse="true" name="children">
<key column="pid"/>
<one-to-many class="com.bjsxt.oa.model.Module"/>
</set
cascade=“all” all代表把所有对父对象进行保存/更新/删除会导致对(所有)子对象的保存/更新/删除。你试一下把all改成 none 看一下;
all : 所有情况下均进行关联操作。
none:所有情况下均不进行关联操作。这是默认值。
save-update:在执行save/update/saveOrUpdate时进行关联操作。
delete:在执行delete时进行关联操作。
Parent parent = (Parent); session.load(Parent.class, pid);;
session.delete(parent);;
1. 爸爸那边设置了cascade=all和inverse=true
a. delete from children
b. delete from parent
2. 爸爸那边设置了cascade=all,没有设inverse=true
a. update children set parent_id=null where parent_id=?
b. delete from children
c. delete from parent
在一对多中,inverse="true"会加入到一的一方的set集合配置中,因为一对多里,关系是由多方的外键进行控制的,一方无法控制关系,因为要这样配置.
在多对多关系中,双方关系应该是由中间表进行管理,但由于多对多不会生成中间表的映射,因此对中间表(也就是关系)的控制需要由多对多的双方或其中的某一方来完成,当某一方不希望对中间表进行控制时,可以把这个配置加入,表示自己不对关系进行控制,而交给对方进行控制.
<set lazy="extra" inverse="true" name="children">
<key column="pid"/>
<one-to-many class="com.bjsxt.oa.model.Module"/>
</set
cascade=“all” all代表把所有对父对象进行保存/更新/删除会导致对(所有)子对象的保存/更新/删除。你试一下把all改成 none 看一下;
all : 所有情况下均进行关联操作。
none:所有情况下均不进行关联操作。这是默认值。
save-update:在执行save/update/saveOrUpdate时进行关联操作。
delete:在执行delete时进行关联操作。
Parent parent = (Parent); session.load(Parent.class, pid);;
session.delete(parent);;
1. 爸爸那边设置了cascade=all和inverse=true
a. delete from children
b. delete from parent
2. 爸爸那边设置了cascade=all,没有设inverse=true
a. update children set parent_id=null where parent_id=?
b. delete from children
c. delete from parent
相关文章推荐
- inverse="true"
- hibernate,inverse="true"的问题
- Hibernate中单向一对多,单向多对一,双向一对多 inverse="true" casecade="save-update"的理解
- inverse="true" 放弃维护关联关系=true
- hibernate inverse 作用 inverse="true" 作用
- hibernate inverse="true"
- Hibernate中inverse="true"的理解
- 由一对多引谈Hibernate的inverse="true"属性
- Hibernate中inverse="true"的理解
- System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation="true"/>
- <supports-screens android:anyDensity="true" />
- listView 中relativeLayout 布局的 android:layout_alignParentBottom="true" 无效的解决办法
- Struts2笔记:struts.devMode value="true"导致的错误
- NHibernate SQL优化小技巧使用dynamic-insert="true" insert="true"
- Displaytag (partialList ="true") 分页例子子
- Tomcat中的Context.xml的<Loader delegate="true"/>
- scrollview中android:fillviewpoint="true"内容不足以滚动视图时,使其内容撑满屏幕
- <compilation debug="true" targetFramework="4.0">的解决
- ant <copy文件忽略目录结构flatten="true"
- 为安卓应用申请更大的内存 largeHeap="true"