本篇文章主要介绍了"hibernate(九)多对多关联",主要涉及到方面的内容,对于MySql感兴趣的同学可以参考一下:
一、多对多单向关联假设一个老师教多个学生,一个学生被多个老师教,这就是典型的多对多关系配置方式是在Teacher类的getStudents()方法上添加注解@M...
一、多对多单向关联
假设一个老师教多个学生,一个学生被多个老师教,这就是典型的多对多关系
配置方式是在Teacher类的getStudents()方法上添加注解@ManyToMany
@JoinTable(name="t_s" ,
joinColumns = { @JoinColumn(name="teacher_id")},
inverseJoinColumns = { @JoinColumn(name="student_id")}
)
Teacher类:
package cn.orlion.hibernate.model;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
@Entity
publicclass Teacher {
privateint id;
private String name;
private Set students = new HashSet();
@Id
@GeneratedValue
publicint getId() {
return id;
}
publicvoid setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
publicvoid setName(String name) {
this.name = name;
}
@ManyToMany
@JoinTable(name="t_s" , // t_s是生成的中间表的表名 joinColumns = { @JoinColumn(name="teacher_id")},// teacher_id是生成中间表中参考自Teacher的外键
inverseJoinColumns = { @JoinColumn(name="student_id")}// inverseJoinColumns配置的是反转的对象(即Student)的idstudent_id是中间表中参考自Student的外键
)
public Set getStudents() {
return students;
}
publicvoid setStudents(Set students) {
this.students = students;
}
}
Student类:
package cn.orlion.hibernate.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
publicclass Student {
privateint id;
private String name;
@Id
@GeneratedValue
publicint getId() {
return id;
}
publicvoid setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
publicvoid setName(String name) {
this.name = name;
}
}
生成的sql语句: