Hibernate--cascade级联
Posted 耍流氓的兔兔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate--cascade级联相关的知识,希望对你有一定的参考价值。
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);
以上是关于Hibernate--cascade级联的主要内容,如果未能解决你的问题,请参考以下文章
hibernate cascade(级联)和inverse关系详解
hibernate cascade(级联)和inverse关系详解