cascade 级联操作字段
Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:
none,all,save-update ,delete, lock,refresh,evict,replicate,persist,
merge,delete-orphan(one-to-many) 。一般对many-to-one,many-to-many不设置级联,
在<one-to-one>和<one-to-many>中设置级联
应用的例子
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="vo.util.bean">
<class name="Department">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<!-- 配置一对多的映射关系 -->
<set name="ems" cascade="save-update,delete">
<!-- 关联关系的外键 -->
<key column="depaer_id"/>
<!-- 关联关系的实体类配置 -->
<one-to-many class="Employee" />
</set>
</class>
</hibernate-mapping>
应用场景:根据业务需求,比如说老师和学生是多对多的关系,如果把一个老师给开除了,是不是要把
学生给开除了呢?还有一个公司,如果公司撤销了一个部门,是不是要把这个部门的员工全都开除了呢
inverse表“是否放弃维护关联关系”(在Java里两个对象产生关联时,对数据库表的影响),
在one-to-many和many-to-many的集合定义中使用,inverse=”true”表示该对象不维护关联关系;
该属性的值一般在使用有序集合时设置成false(注意hibernate的缺省值是false)。
one-to-many维护关联关系就是更新外键。many-to-many维护关联关系就是在中间表增减记录。
注: 配置成one-to-one的对象不维护关联关系
inverse="true" 设置在one的一方,表示放弃级联操作
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="vo.util.bean">
<class name="Department">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<!-- 配置一对多的映射关系 -->
<set name="ems" cascade="save-update,delete" inverse="true">
<!-- 关联关系的外键 -->
<key column="depaer_id"/>
<!-- 关联关系的实体类配置 -->
<one-to-many class="Employee" />
</set>
</class>
</hibernate-mapping>
这时cascade设置就失去意义了,因为inverse设置为true,就表示主表实体放弃了级联维护
inverse不能再有序的集合中使用,因为在有序的集合里,hibernate对关联关系的实体的维护都已经失效了
那还维护什么顺序呢
例如
<list name="ems" inverse="true">
<key column="depaer_id"/>
<!-- 这一列指定其记录顺序 这一列由hibernate来使用 -->
<list-index column="ol"/>
<one-to-many class="Employee"/>
</list>
这里已经设置为inverse="true" 那么就放弃了级联关系的维护
其实对级联关系的维护,其实就是更新其外键,现在它对它对应的一方已经不在维护其关系
那还维护这个顺序吗?当然不会了。所以,在有序的集合的关联关系实体中,不可以使用inverse="true"
end 完毕!
分享到:
相关推荐
inverse Hibernate_级联关系说明_-_关于cascade和inverse的用法
hibernate 级联(cascade和inverse)一对多,Jar包,数据库建表语句都好了,只要修改一下,数据库配置文件,就可以使用了,使用junit进行测试。
mysql中的cascade级联,set null,restrict限制 都是什么意思,有何区别.zip
Hibernate cascade (级联).docHibernate_cascade(级联).doc
Hibernate中Cascade和inverse的区别,讲解的很详细
详解Hibernate cascade级联属性的CascadeType的用法 cascade(级联) ...cascade表示级联操作,在hibernate配置注解@OneToOne,@OneToMany,@ManyToMany,@ManyToOne中的属性。 例如: @ManyToOne(c
Spectrum Microwave Cascade7.0-RF级联频谱分析,适用于级联系统指标计算,包括但不限于NF、OIP3、输出频谱以及杂散分析
Hibernate中cascade与inverse属性详解
使用1500张佩戴口罩的图片和5000张没有佩戴口罩的图片训练成,识别精度高
hibernate inverse和cascade的详细讲解,相当详细全面的对inverse和cascade区别和用法的讲解
NHibernate Inverse & Cascade
该源程序代码可以帮助初学者迅速建立hibernate的关联映射的概念,且详细的讲解了cascade和inverse的用法,程序代码进行了详尽的描述,通俗易懂,容易上手
深入理解hibernate many-to-one(多对一)及 cascade(级联).
视觉识别、人脸识别;包含:haarcascade_eye.xml,haarcascade_eye_tree_eyeglasses.xml,haarcascade_frontalcatface.xml,haarcascade_frontalcatface_extended.xml,haarcascade_fullbody.xml
以前用Sql Server只会对图形界面进行操作,现在发现自己的Sql语言功底是越来越差了,例如如何为两个表添加关联,让他们级联更新和级联 删除。 到晚上查了一下,发现可以用两种办法 触发器方式: create trigger ...
于Hibernate中 cascade 与 inverse 的理解。 您买的Hibernate书是哪一本呢? 孙卫琴的精通Hibernate,还是 深入浅出Hibernate还是那本。。。 我是两本都买了,总体来说还可以,但是,有的地方讲的比较书面化,比如...
计算射频链路的级联特性,计算射频接收和发射的链路计算,包括噪声系数、架构设计、指标分解、电路、增益设计等。
Cascade7.0,RF射频链路分析,能够方便的计算射频链路的噪声系数、P-1dB等指标从而加速项目实现。