1. 程式人生 > 實用技巧 >JPA(Java Persistence API)學習十四(級聯刪除)

JPA(Java Persistence API)學習十四(級聯刪除)

1.概述

級聯移除用於指定如果父實體被移除,則其所有相關實體也將被移除。

以下語法用於執行級聯刪除操作

@OneToOne(cascade=CascadeType.REMOVE)

2.級聯刪除示例

第一步:建立一個名為StudentEntity.java的實體類,

其中包含屬性:s_ids_names_age以及標記為級聯規範的Subject型別的物件。

程式碼:

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;
}
第二步:建立另一個名為Subject.java的實體類 import javax.persistence.*;
@Entity
@Table(name = "subject")
public class Subject {
private String name;
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>
3.應用 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();
學習來源:https://www.yiibai.com/jpa/jpa-cascade-remove.html#article-start