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

1.概述

   多对一映射表示实体集合可以与相似实体关联的单值关联。

   因此,在关系数据库中,实体的多于一行可以引用另一个实体的相似行。

 

2.@ManyToOne 示例

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

                  其中包含一个包含库类型对象的@ManyToOne注解。

                 代码:

                  import javax.persistence.*;

                  @Entity
                  public class Student {
                      @Id
                      @GeneratedValue(strategy = GenerationType.AUTO)
                      private int s_id;
                      private String s_name;
                      @ManyToOne
                      private Library lib;
                   }
      第二步:创建另一个实体类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 lib = new Library();
    lib.setB_id(101);
    lib.setB_name("Data Structure");
    em.persist(lib);
    Student st1 = new Student();
    st1.setS_id(1);
    st1.setS_name("Maxsu");
    st1.setLib(lib);
    Student st2 = new Student();
    st2.setS_id(2);
    st2.setS_name("Curry");
    st2.setLib(lib);
    em.persist(st1);

    em.persist(st2);
    em.getTransaction().commit();
    em.close();
    emf.close();
 
学习来源:https://www.yiibai.com/jpa/jpa-many-to-one-mapping.html#article-start
posted @ 2020-09-08 17:06  小窝蜗  阅读(192)  评论(0)    收藏  举报