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
posted @ 2020-09-09 15:40  小窝蜗  阅读(567)  评论(0)    收藏  举报