Hibernate中的级联cascade

来源:互联网 发布:淘宝怎么切换类目 编辑:程序博客网 时间:2024/05/04 12:35

     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的区别















0 0
原创粉丝点击