多对多
----------实体类
package com.java.entity;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
/**
@author 一只小瑞瑞
怎么开心怎么来
@create 2020-11-27 11:53
/
@Table(name = "JPA_STUDENT")
@Entity
public class Student {
private Integer s_id ;
private String s_name;private Set<teacher> teachers=new HashSet<>();</teacher>
//进行放弃维护关联关系
@ManyToMany(mappedBy = "students")
//排序的方式
@OrderBy("t_id desc")
public Set<teacher> getTeachers() {</teacher>return teachers;
}
public void setTeachers(Set<teacher> teachers) {</teacher>
this.teachers = teachers;
}
@Id //主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //设置自增
public Integer getS_id() {return s_id;
}
public void setS_id(Integer s_id) {
this.s_id = s_id;
}
public String getS_name() {
return s_name;
}
public void setS_name(String s_name) {
this.s_name = s_name;
}
}
package com.java.entity;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
/**
@author 一只小瑞瑞
怎么开心怎么来
@create 2020-11-27 11:53
/
@Table(name = "JPA_TEACHER")
@Entity
public class Teacher {
private Integer t_id ;
private String t_name;private Set<student> students=new HashSet<>();</student>
@Id //主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //设置自增
public Integer getT_id() {return t_id;
}
public void setT_id(Integer t_id) {
this.t_id = t_id;
}
public String getT_name() {
return t_name;
}
public void setT_name(String t_name) {
this.t_name = t_name;
}
//配置中间表的外键
@JoinTable(//中间表的名称 name = "TEACHER_STUDENT", joinColumns = { @JoinColumn( //进行指定外键 名称 当前数据表主键表的外键 .说白了就是中间的外键 name = "tea_id", //当前表的主键id referencedColumnName = "t_id" ) }, //关向数据表的指定配置的外键 inverseJoinColumns ={ @JoinColumn( //进行关联的是对象数据表的外键 外键 name = "stu_id", //关联的对象的id referencedColumnName = "s_id" ) }
)
@ManyToMany
public Set<student> getStudents() {</student>return students;
}
public void setStudents(Set<student> students) {</student>
this.students = students;
}
}
-------------------------------测试
package com.java.test;
import com.java.entity.Student;
import com.java.entity.Teacher;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
/**
@author 一只小瑞瑞
怎么开心怎么来
@create 2020-11-27 12:01
多对多
/
public class Test_Teacher_Stuendt {
//创建事务对象
private EntityTransaction transaction;
//创建entityManager
private EntityManager entityManager;
//创建entityManagerFactory 工厂
private EntityManagerFactory entityManagerFactory ;/**
Test之前执行
*/
@Before
public void getBefore(){
//创建工厂
entityManagerFactory=Persistence.createEntityManagerFactory("jpa-01");
entityManager=entityManagerFactory.createEntityManager();
transaction = entityManager.getTransaction();
//开启事务
transaction.begin();}
/**
Test之后执行
*/
@After
public void getAfter(){//提交事务
transaction.commit();
//关闭工厂
entityManager.close();
entityManagerFactory.close();}
/** *添加 */ @Test public void getVoid(){ //创建学生对象 Student student = new Student(); student.setS_name("海绵宝宝"); Student student1 = new Student(); student1.setS_name("派大星"); //创建教师对象 Teacher teacher = new Teacher(); teacher.setT_name("泡芙阿姨"); Teacher teacher1 = new Teacher(); teacher1.setT_name("蟹老板"); //设置关联关系 student.getTeachers().add(teacher); student.getTeachers().add(teacher1); student1.getTeachers().add(teacher); student1.getTeachers().add(teacher1); teacher.getStudents().add(student); teacher1.getStudents().add(student1); teacher.getStudents().add(student); teacher1.getStudents().add(student1); //进行保存 entityManager.persist(teacher); entityManager.persist(teacher1); entityManager.persist(student); entityManager.persist(student1); } /** 删除 */ @Test public void getVoidDel(){ Student student = entityManager.find(Student.class, 1); entityManager.remove(student); //刷新 跟催 entityManager.flush(); } /** * 修改 * */ @Test public void getVoidUpd01(){ Student student = entityManager.find(Student.class, 1); student.setS_name("珊迪"); student.getTeachers().iterator().next().setT_name("海盗船长"); } /** *修改 **/ @Test public void getVoidUpd(){ Student student = new Student(); student.setS_name("小瑞"); entityManager.persist(student); } /** 查询 */ @Test public void getVoidSel(){ Student student = entityManager.find(Student.class, 1); System.out.println(student.getS_name()); for (Teacher teacher : student.getTeachers()) { System.out.println(teacher.getT_id() + ":" + student.getS_name()); } }
}