JPA(Java Persistence API)学习十(一对多映射)

1.介绍

   一对多映射进入集合值关联的类别,其中实体与其他实体的集合关联。

  因此,在这种类型的关联中,一个实体的实例可以映射到另一个实体的任意数量的实例。

 

2.@OneToMany 示例

   第一步:创建一个实体类Student.java,它包含学生ID(s_id),学生姓名(s_name),

                 其中包含包含List类型的Library类对象的@OneToMany注释。

                  代码:

                     import java.util.List;

                     import javax.persistence.*;

                    @Entity
                    public class Student {
                         @Id
                         @GeneratedValue(strategy = GenerationType.AUTO)
                         private int s_id;
                         private String s_name;
                        @OneToMany(targetEntity = Library.class)
                         private List books_issued;
                    }
     第二步:创建另一个实体类Library.java,其中包含book id(b_id),book name(b_name)
               import javax.persistence.*;
               @Entity
               public class Library {
                  @Id
                  @GeneratedValue(strategy = GenerationType.AUTO)
                   private int b_id;
                   private String b_name;
              }
       第三步:将实体类和数据库配置映射到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="book_issued">
                        <class>com.yiibai.mapping.Student</class>
                       <class>com.yiibai.mapping.Library</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("books_issued");
    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
    Library lib1 = new Library();
    lib1.setB_id(101);
    lib1.setB_name("Data Structure");
    Library lib2 = new Library();
    lib2.setB_id(102);
    lib2.setB_name("DBMS");
    em.persist(lib1);
    em.persist(lib2);
    ArrayList<Library> list = new ArrayList<Library>();
    list.add(lib1);
    list.add(lib2);
    Student st1 = new Student();
    st1.setS_id(1);
    st1.setS_name("Maxsu");
    st1.setBooks_issued(list);
    em.persist(st1);
    em.getTransaction().commit();
    em.close();
    emf.close();
 
学习来源:https://www.yiibai.com/jpa/jpa-one-to-many-mapping.html#article-start
posted @ 2020-09-08 16:54  小窝蜗  阅读(199)  评论(0)    收藏  举报