例如:一个老师教多个学生,一个学生被多个老师教。
teacher.java
@Entity
public class Teacher
{
private Set<Student>students=new HashSet<Student>();
private String name;
private int id;
@ManyToMany
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Student.java
@Entity
public class Student {
private String name;
private int id;
@Id
@GeneratedValue
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;
}
}
用xml写,代码如下:
Student.java
public class Student {
private String name;
private int id;
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;
}
}
Teacher.java
public class Teacher
{
private Set<Student>students=new HashSet<Student>();
private String name;
private int id;
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Teacher.hbm.xml
<hibernate-mapping package="com.wanhao" >
<class name="Teacher" >
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<set name="students" >
<key column="teacherid"></key>
<many-to-many column="studentsId" class="Student"></many-to-many>
</set>
</class>
</hibernate-mapping>
Student.hbm.xml
<hibernate-mapping package="com.wanhao" >
<class name="Student" >
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
</class>
</hibernate-mapping>
还有一个实例:
一个学生选多个课程,每科也可以被多个学生选择。
Student.java
@Entity
public class Student
{
private int id;
private String name;
private Set<Course> courses = new HashSet<Course>();
@ManyToMany
@JoinTable(name="student_course",
joinColumns=@JoinColumn(name="student_id", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="course_id", referencedColumnName="id")
)
public Set<Course> getCourses() {
return courses;
}
public void setCourses(Set<Course> courses) {
this.courses = courses;
}
@Id
@GeneratedValue
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;
}
}
Course.java
@Entity
public class Course {
private int id;
private String name;
@Id
@GeneratedValue
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;
}
}