导航

Hibernate cascade级联

Posted on 2017-09-28 22:21  耍流氓的兔兔  阅读(247)  评论(0编辑  收藏  举报

 

cascade:

级联:
  是对象的连锁操作

 级联保存(一对多):

级联保存:
  当保存双向关系的一方时,默认会报告错误,此时应该在customr中设置级联保存,即操作一个对象时,通过操作其他关联对象

  如果一方设置了cascade,那么在测试用例中针对这一方进行保存操作
  多对多的级联保存语法和一对多的级联保存语法相似,均在<set>节点增加 cascade="save-update"
  在customer一端配置级联更新:
  <set name="orders" cascade="save-update">
    <key column="customer_id"></key>
    <one-to-many class="com.roxy.hibernate.pojo.Order"/>
  </set> 
  在测试用例中针对customer进行操作:
    cust.getOrders().add(o1);
    cust.getOrders().add(o2);
 
    session.save(cust);    

级联删除(一对多):

级联删除:
  如果不设置级联删除,那么在删除列信息时会将数据的外键设置为null
  如果设置了级联删除,那么会在删除信息时将外键关联的数据同时删除

如果一方设置了cascade,那么在测试用例中针对这一方进行删除操作
多对多的级联保存语法和一对多的级联保存语法相似,均在<set>节点增加 cascade="save-update, delete"

 

  在customer端配置级联删除:
  <set name="orders" cascade="save-update, delete">
    <key column="customer_id"></key>
    <one-to-many class="com.roxy.hibernate.pojo.Order"/>
  </set>

or:

  <set name="orders" cascade="all">

   在测试用例中测试:

        Customer customer = session.get(Customer.class, 14);
        session.delete(customer);