一个老师对应多个学生,一个学生有多个老师
t_student表
列名 | 数据类型 | PK | FK | 约束 | 备注 |
Id | Int | √ |
| PK | 主键 |
name | Varchar(50) |
|
|
| 姓名 |
t_teacher表
列名 | 数据类型 | PK | FK | 约束 | 备注 |
Id | Int | √ |
| PK | 主键 |
name | Varchar(50) |
|
|
| 姓名 |
t_teacher_student表
列名 | 数据类型 | PK | FK | 约束 | 备注 |
Id | int | √ |
| PK | 主键 |
sid | int |
| √ |
| 学生id |
tid | int |
| √ |
| 老师id |
java实体类
package com.kaishengit.pojo;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Entity
@Table(name="t_teacher")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Teacher {
private int id;
private String name;
private Set<Student> studentSet;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToMany(mappedBy="teacherSet")//表t_teacher放弃维护,teacherSet是Student类里的属性名,一定要使一方放弃维护
public Set<Student> getStudentSet() {
return studentSet;
}
public void setStudentSet(Set<Student> studentSet) {
this.studentSet = studentSet;
}
}
package com.kaishengit.pojo;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Entity
@Table(name="t_student")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Student {
private int id;
private String name;
private Set<Teacher> teacherSet;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToMany
@JoinTable(name="t_teacher_student",joinColumns={@JoinColumn(name="sid")},inverseJoinColumns={@JoinColumn(name="tid")})
//注意:joinColumns是指自己表在关系表(t_teacher_student)中的外键,inverseJoinColumns 是对方表即t_teacher表在关系表中的外键
public Set<Teacher> getTeacherSet() {
return teacherSet;
}
public void setTeacherSet(Set<Teacher> teacherSet) {
this.teacherSet = teacherSet;
}
}