Hibernate入门(九)级联删除
Hibernate级联删除
上一篇文章学习了级联保存和更新,这个级联删除应该很好理解的。一样的道理,删除一方,同时删除有关联的一方。
https://www.cnblogs.com/deepSleeping/p/9978296.html
同样有方向性。
删除客户,客户下的订单也同样删除。
用户表:

订单表:

业务:删除id值为1的客户,想要的效果:同时删除id值为1的客户下的所有订单
1.配置customer.hbm.xml文件(cascade = "delete")
<!-- 配置一对多属性 -->
<set name="ods" cascade="delete">
<key column="cust_order_id" ></key>
<one-to-many class="Order"/>
</set>
2.java测试类
/**
* 删除id值为1的用户,级联删除该用户下的订单
*/
@Test
public void fun(){
Session session = HibernateUtils.getSession();
session.getTransaction().begin(); try {
//获取id值为1的用户 持久态
Customer cst = session.get(Customer.class, 1); session.delete(cst);
} catch (Exception e) {
session.getTransaction().rollback();
// TODO Auto-generated catch block
e.printStackTrace();
} session.getTransaction().commit();
}


生成的SQL语句
Hibernate:
select
customer0_.cust_id as cust_id1_0_0_,
customer0_.cust_name as cust_nam2_0_0_,
customer0_.cust_gender as cust_gen3_0_0_,
customer0_.cust_age as cust_age4_0_0_,
customer0_.cust_phone as cust_pho5_0_0_
from
customera customer0_
where
customer0_.cust_id=?
Hibernate:
select
ods0_.cust_order_id as cust_ord3_1_0_,
ods0_.order_id as order_id1_1_0_,
ods0_.order_id as order_id1_1_1_,
ods0_.detail_id as detail_i2_1_1_,
ods0_.cust_order_id as cust_ord3_1_1_
from
ordersa ods0_
where
ods0_.cust_order_id=?
Hibernate:
update
ordersa
set
cust_order_id=null
where
cust_order_id=?
Hibernate:
delete
from
ordersa
where
order_id=?
Hibernate:
delete
from
ordersa
where
order_id=?
Hibernate:
delete
from
customera
where
cust_id=?
很明显,删除了id为1的客户同时,删除了该客户下的订单
然后翻转方向,删除订单,同时删除有这个订单的所有客户(虽然应该不会有这种奇怪的需求把....hah )
一样的配置和java代码编写后同样是测试成功了。
提示:最好在测试第二个之前,要把customer.hbm.xml配置中的级联删除的属性去掉,不然订单删除,然后删除级联的客户,客户删除后,又级联删除该客户下的订单,如此反复,估计表里的数据也差不多没了吧。。。。
Hibernate入门(九)级联删除的更多相关文章
- 谈论Hibernate级联删除——JPA根据Hibernate实现许多级联删除CascadeType.DELETE_ORPHAN
声明: 1.这篇文章是原创.非复制或转载过来. 2.在本文中,参数都亲自做过实验证明. 3.这篇文章谈到了Hibernate配置基于注释的方法.hbm语法不可用. 不清JPA.Hibernate.EJ ...
- Hibernate入门(八)级联保存或更新(含问题在末尾,求大佬指点..)
级联保存或更新CASCADE 级联保存或更新: 作用就是:保存一方的数据的时候,会把关联的对象也同时保存. 级联保存或更新的配置: 属性名:cascade 属性值: 1.none:所有情况下均不进行关 ...
- Hibernate下的Many-to-Many的级联删除
hibernate下的Many-to-Many的级联删除 Hibernate多对多的例子不少,但仔细一看,大多数都是保存的,删除谈的少,但问题还不少,因此有必须简单测试一下,以下我们来个简单的多对多关 ...
- Hibernate学习笔记(一):级联删除
一对多的关系映射 在一的一方配置文件中将会配置set节点信息: *.hbm.xml配置文件中set节点的属性: Lazy:默认是true 即使用延迟加载,false表示即时加载: Order-by:一 ...
- 再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN
声明: 1.本文系原创,非抄袭或转载过来的. 2.本文论点都亲手做过实验论证. 3.本文所讲的Hibernate配置都基于注解的方式,hbm语法未提供. 非常多人对持久层概念搞不清JPA.Hibern ...
- Hibernate中表与表之间的关联多对多,级联保存,级联删除
第一步:创建两个实体类:用户和角色实体类,多对多关系,并让两个实体类之间互相关联: 用户实体类: package com.yinfu.entity; import java.util.HashSet; ...
- Hibernate中表与表之间的关联一对多,级联保存和级联删除
1:Hibernate的一对多操作(重点) 一对多映射配置 第一步:创建两个实体类:客户和联系人(例)以客户为一,联系人为多: package com.yinfu.entity; public cla ...
- hibernate 级联删除报更新失败的问题(org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update)
首先hibernate级联删除的前提是,首先需要在映射文件中配置,配置多表之间的关联关系: 下面以部门表(Dept)和员工表(Emp)为例: 1.在Emp.hbm.xml映射文件中配置many-to- ...
- Hibernate一对多关联映射的配置及其级联删除问题
首先举一个简单的一对多双向关联的配置: 一的一端:QuestionType类 package com.exam.entity; import java.util.Set; public class Q ...
随机推荐
- web browser 发展史
浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,用来显示在万维网或局域网等内的文字.图像及其他信息,便于人们的浏览. Tim Berners-Lee是第一个使 ...
- Windows 10 IoT Core 17127 for Insider 版本更新
昨天,微软发布了Windows 10 IoT Core 17127 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性.相比于17120,修复了一个已知的问题. 一些已知的 ...
- 每天学点SpringCloud(三):自定义Eureka集群负载均衡策略
相信看了 每天学点SpringCloud(一):简单服务提供者消费者调用,每天学点SpringCloud(二):服务注册与发现Eureka这两篇的同学都了解到了我的套路,没错,本篇博客同样是为了解决上 ...
- Python开发网站目录扫描器
有人问为什么要去扫描网站目录:懂的人自然懂 这个Python脚本的特点: 1.基本完善 2.界面美观(只是画了个图案) 3.可选参数增加了线程数 4.User Agent细节处理 5.多线程显示进度 ...
- LabVIEW(一):知识入门
一.DAQ基础知识简介 1.DAQ是英文Data Acquisition (数据采集)的缩写. 数据采集(DAQ)是指测量:电压.电流.温度.压力.声音.编码数据等电气或物理现象的过程. 2.数据采集 ...
- Spark从入门到精通(一)
什么是Spark 大数据计算框架 离线批处理 大数据体系架构图(Spark) Spark包含了大数据领域常见的各种计算框架:比如Spark Core用于离线计算,Spark SQL用于交互式查询,Sp ...
- Spring Boot 2.x 启动全过程源码分析(上)入口类剖析
Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boot 为什么这么简便的奥秘. 本篇基于 Spring Boot 2.0.3 版本进 ...
- 说说React组件的State
说说React组件的State React的核心思想是组件化的思想,应用由组件搭建而成, 而组件中最重要的概念是State(状态). 正确定义State React把组件看成一个状态机.通过与用户的交 ...
- Python编程Day4——if判断、while循环、for循环
一.if判断 语法一: if条件: 代码块1 代码块2 代码块3 示例: sex='female' age=18 is_beautiful=True if sex =='female'and age& ...
- Poi 生成xls
来首小诗: 今日不胜昨日寒,我却把那拖鞋穿,脚儿冰冰秋风瑟,抬头一看碧蓝天. ---泥沙砖瓦浆木匠 项目需求: p2p项目中,需要一些数据报表一xls的格式,提供下载.并给主管签名. ...