JPA--双向多对多

来源:互联网 发布:西安网络推广公司 编辑:程序博客网 时间:2024/05/02 00:03

JPA双向多对多,两表之间会生成一种关联表。

A双向多对多的维护端有自己根据实际情况而定。在一下的例子中Student是维护端,Teacher为被维护端


Student.java


package com.olay.entity;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;@Entitypublic class Student {private int id;private String name;private Set<Teacher> teacher = new HashSet<Teacher>();public Student(){};public Student(String name){this.name=name;}@Id @GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}@Column(length=10,nullable=false)public String getName() {return name;}public void setName(String name) {this.name = name;}@ManyToMany(cascade={CascadeType.REFRESH})@JoinTable(name="student_teacher",joinColumns=@JoinColumn(name="student_id"),inverseJoinColumns=@JoinColumn(name="teacher_id"))public Set<Teacher> getTeacher() {return teacher;}public void setTeacher(Set<Teacher> teacher) {this.teacher = teacher;}}



Teacher.java

package com.olay.entity;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.ManyToMany;@Entitypublic class Teacher {private int id;private String name;private Set<Student> student = new HashSet<Student>();public Teacher(){};public Teacher(String name){this.name=name;}@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}@Column(length=10,nullable=false)public String getName() {return name;}public void setName(String name) {this.name = name;}@ManyToMany(cascade={CascadeType.REFRESH},mappedBy="teacher")public Set<Student> getStudent() {return student;}public void setStudent(Set<Student> student) {this.student = student;}}


测试类


package com.olay.entity;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import junit.framework.TestCase;public class ManyToMany extends TestCase {public void test(){EntityManagerFactory emf = Persistence.createEntityManagerFactory("olayjpa");EntityManager em = emf.createEntityManager();em.getTransaction().begin();Teacher teacher = new Teacher("王老师");Student student = new Student("李同学");teacher.getStudent().add(student);student.getTeacher().add(teacher);em.persist(teacher);em.persist(student);em.getTransaction().commit();em.close();emf.close();}}


生成了如下三张表


0 0
原创粉丝点击