多对多
----------实体类
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());
}
}}

京公网安备 11010502036488号