jpa双向多对多关联关系

来源:互联网 发布:八爪网络科技 知乎 编辑:程序博客网 时间:2024/04/27 14:18

1.1.  关系维护方

Teacher.java

package com.morris.entity; import java.util.Set; import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany; @Entitypublic class Teacher {       @Id    @GeneratedValue    private Integer id;       @Column(name="name",length=50,nullable=false)    private String name;       @ManyToMany(cascade=CascadeType.REFRESH,fetch=FetchType.LAZY)    @JoinTable(name="stu_tea",joinColumns=@JoinColumn(name="stu_id"),inverseJoinColumns=@JoinColumn(name="tea_id"))    private Set<Student> students;       @Override    public String toString() {       return "Teacher [id=" + id + ", name=" + name + "]";    }     public Teacher() {       super();       // TODO Auto-generated constructor stub    }     public Teacher(String name) {       super();       this.name = name;    }     public Set<Student> getStudents() {       return students;    }     public void setStudents(Set<Student> students) {       this.students = students;    }     public Integer getId() {       return id;    }     public void setId(Integer id) {       this.id = id;    }     public String getName() {       return name;    }     public void setName(String name) {       this.name = name;    }} 


1.2.  关系被维护方

Student.java

package com.morris.entity; import java.util.Set; import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.ManyToMany; @Entitypublic class Student {       @Id    @GeneratedValue    private Integer id;       @Column(name="name",nullable=false,length=50)    private String name;       @ManyToMany(cascade=CascadeType.REFRESH,fetch=FetchType.LAZY,mappedBy="students")    private Set<Teacher> teachers;     public Integer getId() {       return id;    }     public void setId(Integer id) {       this.id = id;    }     public String getName() {       return name;    }     public void setName(String name) {       this.name = name;    }     public Student(String name) {       super();       this.name = name;    }     public Set<Teacher> getTeachers() {       return teachers;    }     public void setTeachers(Set<Teacher> teachers) {       this.teachers = teachers;    }     public Student() {       super();       // TODO Auto-generated constructor stub    }     @Override    public String toString() {       return "Student [id=" + id + ", name=" + name + "]";    }       }


 

1.3.  测试

Many2ManyTest.java

package com.morris.test; import static org.junit.Assert.*; import java.util.HashSet;import java.util.Set; import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence; import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test; import com.morris.entity.Student;import com.morris.entity.Teacher; public class Many2ManyTest {        private static EntityManagerFactory entityManagerFactory;             private static EntityManager entityManager;             @BeforeClass       public static void setUpBeforeClass() throws Exception {                           entityManagerFactory = Persistence.createEntityManagerFactory("jpaDemo");                           entityManager = entityManagerFactory.createEntityManager();                           entityManager.getTransaction().begin();             }        @Test       public void test() {                           Teacher teacher = new Teacher("张三");              Student student = new Student("李四");                           entityManager.persist(teacher);              entityManager.persist(student);                           Set<Student> students = new HashSet<Student>();              students.add(student);              teacher.setStudents(students);                                              }              @AfterClass       public static void tearDownAfterClass() throws Exception {                           entityManager.getTransaction().commit();                           entityManager.close();              entityManagerFactory.close();       }       }


 

0 0
原创粉丝点击