java 级联删除_JPA级联删除
本篇文章帮大家学习JPA级联删除,包含了JPA级联删除使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。
级联移除用于指定如果父实体被移除,则其所有相关实体也将被移除。 以下语法用于执行级联删除操作 -
@OneToOne(cascade=CascadeType.REMOVE)
JPA级联删除示例
在这个例子中,我们将创建两个相互关联的实体类,但要建立它们之间的依赖关系,我们将执行级联操作。
这个例子包含以下步骤 -
第1步: 在com.yiibai.jpa.student包下创建一个名为StudentEntity.java的实体类,其中包含属性:s_id,s_name,s_age以及标记为级联规范的Subject类型的对象。
文件: StudentEntity.java -
package com.yiibai.jpa.student;
import javax.persistence.*;
import com.yiibai.jpa.subject.Subject;
@Entity
@Table(name = "student")
public class StudentEntity {
@Id
private int s_id;
private String s_name;
private int s_age;
@OneToOne(cascade = { CascadeType.REMOVE })
private Subject sub;
public Subject getSub() {
return sub;
}
public void setSub(Subject sub) {
this.sub = sub;
}
public StudentEntity(int s_id, String s_name, int s_age, Subject sub) {
super();
this.s_id = s_id;
this.s_name = s_name;
this.s_age = s_age;
this.sub = sub;
}
public StudentEntity() {
super();
}
public int getS_id() {
return s_id;
}
public void setS_id(int s_id) {
this.s_id = s_id;
}
public String getS_name() {
return s_name;
}
public void setS_name(String s_name) {
this.s_name = s_name;
}
public int getS_age() {
return s_age;
}
public void setS_age(int s_age) {
this.s_age = s_age;
}
}
第2步: 在com.yiibai.jpa.subject包下创建另一个名为Subject.java的实体类。
文件:Subject.java -
package com.yiibai.jpa.subject;
import javax.persistence.*;
@Entity
@Table(name = "subject")
public class Subject {
private String name;
private int marks;
@Id
private int s_id;
public Subject(String name, int marks, int s_id) {
super();
this.name = name;
this.marks = marks;
this.s_id = s_id;
}
public Subject() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMarks() {
return marks;
}
public void setMarks(int marks) {
this.marks = marks;
}
public int getS_id() {
return s_id;
}
public void setS_id(int s_id) {
this.s_id = s_id;
}
}
现在,将实体类和其他数据库配置映射到persistence.xml文件中。
文件:persistence.xml -
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
com.yiibai.jpa.student.StudentEntity
com.yiibai.jpa.subject.Subject
value="com.mysql.jdbc.Driver" />
value="jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC" />
value="123456" />
value="create-or-extend-tables" />
在com.yiibai.jpa.cascade包下创建一个名为StudentCascade.java的持久化类,以便将实体对象与数据保持一致。
文件:StudentCascade.java -
package com.yiibai.jpa.cascade;
import javax.persistence.*;
import com.yiibai.jpa.student.*;
public class StudentCascade {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
StudentEntity s = em.find(StudentEntity.class, 101);
em.remove(s);
em.getTransaction().commit();
em.close();
emf.close();
}
}
注 - student表中的主键(即s_id)将作为subject表中的外键处理,以维持两个表之间的关系。
输出结果
程序执行完毕后,在MySQL工作台下生成以下表格。
student表 - 要获取数据,在MySQL中运行select * from student。得到结果如下 - mysql> select * from student;
+------+-------+--------+----------+
| S_ID | S_AGE | S_NAME | SUB_S_ID |
+------+-------+--------+----------+
| 102 | 22 | James | 102 |
+------+-------+--------+----------+
1 rows in set
subject表 - 要获取数据,在MySQL中运行select * from subject。得到结果如下 - mysql> select * from subject ;
+------+-------+---------+
| S_ID | MARKS | NAME |
+------+-------+---------+
| 102 | 75 | Maths |
+------+-------+---------+
1 rows in set
java 级联删除_JPA级联删除相关推荐
- jpa级联添加_jpa级联(Cascade)操作
由于 重复性的操作十分烦琐,尤其是在处理多个彼此关联对象情况下,此时我们可以使用级联(Cascade)操作.级联 在关联映射中是个重要的概念,指当主动方对象执行操作时,被关联对象(被动方)是否同步执行 ...
- java 级联删除_Mybatis 级联删除的实现
需求描述 今日需求是删除资源时同时删除与该资源绑定的角色数据,有两张表,资源表.角色与资源绑定表,级联删除的时候有两种方法:①建立表时直接建立约束,当父表删除数据时数据库会自动去删除子表中的数据,②通 ...
- oracle 允许级联删除,oracle系列--级联删除和级联更新
鉴于此前收藏的精彩博客无料被删除了,很是痛心,所以还是要复制一下 一.级联删除 Oracle在外键的删除上有NO ACTION(类似RESTRICT).CASCADE和SET NULL三种行为. 下面 ...
- 数据库级联操作mysql_Oracle数据库中的级联查询、级联删除、级联更新操作教程...
级联查询在ORACLE 数据库中有一种方法可以实现级联查询 select * //要查询的字段 from table //具有子接点ID与父接点ID的表 start with selfid=id // ...
- [NHibernate]一对多关系(级联删除,级联添加)
目录 写在前面 文档与系列文章 一对多关系 一个例子 级联删除 级联保存 总结 写在前面 在前面的文章中,我们只使用了一个Customer类进行举例,而在客户.订单.产品中它们的关系,咱们并没有涉及, ...
- mysql级联更新_Mysql实现级联操作(级联更新、级联删除)(转)
一.首先创建两张表stu,sc create table stu( sid int UNSIGNED primary key auto_increment, name varchar(20) not ...
- mysql数据库教程级联_Mysql实现级联操作(级联更新、级联删除)
tablestu( sidint UNSIGNED primary keyauto_increment, namevarchar(20) not null) TYPE=InnoDB charset=u ...
- Oracle数据库中的级联查询、级联删除、级联更新操作教程
这里整理了Oracle中的三种级联操作,其中Oracle定义外健的时候可以定义级联删除,但是没有级联修改的语法,当然可以用触发器实现,下面我们详细来看Oracle数据库中的级联查询.级联删除.级联更新 ...
- sql级联更新和级联删除
title: sql级联更新和级联删除 date: 2019-05-27 23:15:29 tags: [SQL, Mysql] sql级联更新 执行更新book表失败 后来查找原因是book表被bo ...
最新文章
- java异常分析;剖析printStackTrace和fillInStackTrace
- 很幽默的讲解六种Socket IO模型
- 洛谷——P2083 找人
- 【个人成长学习讨论小组】练习2:角色
- Java 中如何模拟真正的同时并发请求?
- 汇编语言布尔和比较指令简介
- 线程----Monitor(互斥锁)类设置超时值
- 数字三角形的显示 java
- 开机自启动redis
- 深度好文,如何培养真正的数据分析思维?附实践案例
- 《Spring技术内幕》——1.2节Spring的设计目标
- oracle将列名进行拼接,请教关于用拼接的字符串作为表的列名进行操作的问题
- 防毒墙APT防护抗DDOS攻击
- html页面到服务器上乱码,网页乱码问题
- 计算机基础知识(上)(硬件篇)
- 360路由器v2刷第三方固件_路由器刷固件图文教程,刷机OpenWrt第三方固件,路由器升级固件...
- 计算机专硕怎么规划未来?
- golang 单元测试进阶篇
- linux ubuntu 22.04卸载firefox火狐浏览器正确方式
- 输入一段英文字符,统计每个小写字母的出现次数
热门文章
- 乾颐堂安德华为数通HCNA真题解析版(第2部分)
- 通过 Dockerfile 搭建标注工具 brat 的镜像
- 0成本截流的三种方法,挣钱从引流开始
- 【UE·蓝图底层篇】一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass
- html标记语言格式,标记语言——打印样式
- 祝所有的程序猿春节愉快,好好休息
- win10 cuda13 pytorch pycharm
- openstack compute service list报错(HTTP 503)
- Blurring the Lines between Blockchains andDatabase Systems: the Case of Hyperledger Fabric(翻译)
- Spring cloud网关gateway代理websocket报Max frame length of 65536 has been exceeded