JPA(Java Persistence API)学习十四(级联删除)
1.概述
级联移除用于指定如果父实体被移除,则其所有相关实体也将被移除。
以下语法用于执行级联删除操作
@OneToOne(cascade=CascadeType.REMOVE)
2.级联删除示例
第一步:创建一个名为StudentEntity.java的实体类,
其中包含属性:s_id,s_name,s_age以及标记为级联规范的Subject类型的对象。
代码:
import javax.persistence.*;
import com.yiibai.jpa.subject.Subject;
@Entity
@Table(name = "student")
public class StudentEntity {
@Table(name = "student")
public class StudentEntity {
@Id
private int s_id;
private String s_name;
private int s_age;
private int s_id;
private String s_name;
private int s_age;
@OneToOne(cascade = { CascadeType.REMOVE })
private Subject sub;
}
private Subject sub;
}
第二步:创建另一个名为
Subject.java的实体类 import javax.persistence.*;
@Entity
@Table(name = "subject")
public class Subject {
@Table(name = "subject")
public class Subject {
private String name;
private int marks;
@Id
private int s_id;
}
private int marks;
@Id
private int s_id;
}
第三步:将实体类和数据库配置映射到persistence.xml文件中
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
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">
<persistence-unit name="Student_details">
<class>com.yiibai.jpa.student.StudentEntity</class>
<class>com.yiibai.jpa.subject.Subject</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password"
value="123456" />
<property name="eclipselink.logging.level" value="SEVERE" />
<property name="eclipselink.ddl-generation"
value="create-or-extend-tables" />
</properties>
</persistence-unit>
</persistence>
<persistence version="2.1"
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">
<persistence-unit name="Student_details">
<class>com.yiibai.jpa.student.StudentEntity</class>
<class>com.yiibai.jpa.subject.Subject</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password"
value="123456" />
<property name="eclipselink.logging.level" value="SEVERE" />
<property name="eclipselink.ddl-generation"
value="create-or-extend-tables" />
</properties>
</persistence-unit>
</persistence>
3.应用
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.getTransaction().begin();
StudentEntity s = em.find(StudentEntity.class, 101);
em.remove(s);
em.remove(s);
em.getTransaction().commit();
em.close();
emf.close();
emf.close();
学习来源:https://www.yiibai.com/jpa/jpa-cascade-remove.html#article-start

浙公网安备 33010602011771号