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 {
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;
@OneToMany(targetEntity = Library.class)
private List books_issued;
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;
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");
EntityManager em = emf.createEntityManager();
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Library lib1 = new Library();
lib1.setB_id(101);
lib1.setB_name("Data Structure");
lib1.setB_id(101);
lib1.setB_name("Data Structure");
Library lib2 = new Library();
lib2.setB_id(102);
lib2.setB_name("DBMS");
lib2.setB_id(102);
lib2.setB_name("DBMS");
em.persist(lib1);
em.persist(lib2);
em.persist(lib2);
ArrayList<Library> list = new ArrayList<Library>();
list.add(lib1);
list.add(lib2);
list.add(lib1);
list.add(lib2);
Student st1 = new Student();
st1.setS_id(1);
st1.setS_name("Maxsu");
st1.setBooks_issued(list);
st1.setS_id(1);
st1.setS_name("Maxsu");
st1.setBooks_issued(list);
em.persist(st1);
em.getTransaction().commit();
em.close();
emf.close();
em.close();
emf.close();
学习来源:https://www.yiibai.com/jpa/jpa-one-to-many-mapping.html#article-start

浙公网安备 33010602011771号