1) 作用:当对一个对象进行操作的时候,对和它关联的对象执行相同的操作
2) 默认为none,表示不级联
3) 可以设置的值有:all、delete、save-update、none等
4)例子
<class name="cn.com.cpf.pojo.Department" table="t_department" >
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="employees" inverse="true" cascade="save-update">
<key column="departmentId"/>
<one-to-many class="cn.com.cpf.pojo.Employee" />
</set>
</class>
Employee xny = new Employee();
xny.setName("xny");
Employee zq = new Employee();
zq.setName("zq");
Department department = new Department();
department.setName("test");
department.getEmployees().add(xny);
department.getEmployees().add(zq);
session.save(department);
结果为:
department 表:
employee表
说明:1>只保存了一端的对象,但是由于设置了级联,所以和它关联的多的对象也会保存
2>如果未设置级联,会报异常
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: cn.com.cpf.pojo.Employee
3>可以清楚看到,由于设置级联,所以关联对象被保存,由于inverse设置为true,所以多的一端中的外键未被设置值,从这里就可以看出inverse和cascade的区别