JPA(Java Persistence API)学习十一(多对一映射)
1.概述
多对一映射表示实体集合可以与相似实体关联的单值关联。
因此,在关系数据库中,实体的多于一行可以引用另一个实体的相似行。
2.@ManyToOne 示例
第一步:创建一个实体类Student.java,包含学生ID(s_id)和学生姓名(s_name),
其中包含一个包含库类型对象的@ManyToOne注解。
代码:
import javax.persistence.*;
@Entity
public class Student {
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int s_id;
private String s_name;
@GeneratedValue(strategy = GenerationType.AUTO)
private int s_id;
private String s_name;
@ManyToOne
private Library lib;
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;
}
@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>
<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");
em.persist(st2);
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Library lib = new Library();
lib.setB_id(101);
lib.setB_name("Data Structure");
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);
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);
st2.setS_id(2);
st2.setS_name("Curry");
st2.setLib(lib);
em.persist(st1);
em.persist(st2);
em.getTransaction().commit();
em.close();
emf.close();
em.close();
emf.close();
学习来源:https://www.yiibai.com/jpa/jpa-many-to-one-mapping.html#article-start

浙公网安备 33010602011771号