示例:一个老师(Teacher)有多个学生(Student),一个学生有多个老师。
public class Teacher { private Integer id; private String name; private Set<Student> students = new HashSet<Student>(); // getter and setter }
public class Student { private Integer id; private String name; private Set<Teacher> teachers = new HashSet<Teacher>(); // getter and setter }
用XML映射
<hibernate-mapping package="com.shen.hibernate4.entity"> <class name="Teacher" table="tb_teacher"> <id name="id"> <generator class="identity" /> </id> <property name="name" /> <set name="students" table="tb_student_teacher"> <key column="teacher_id" /> <many-to-many class="Student" column="student_id" /> </set> </class> </hibernate-mapping>
<hibernate-mapping package="com.shen.hibernate4.entity"> <class name="Student" table="tb_student"> <id name="id"> <generator class="identity" /> </id> <property name="name" /> <!-- 不维护关联关系 --> <set name="teachers" table="tb_student_teacher" inverse="true"> <key column="student_id" /> <many-to-many class="Teacher" column="teacher_id" /> </set> </class> </hibernate-mapping>
用@Annotation映射
@Entity @Table(name = "tbl_teacher") public class Teacher { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; @ManyToMany @JoinTable(name = "tb_student_teacher", joinColumns = @JoinColumn(name = "teacher_id"), inverseJoinColumns = @JoinColumn(name = "student_id")) private Set<Student> students = new HashSet<Student>(); // getter and setter }
@Entity @Table(name = "tbl_student") public class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; //不维护关联关系 @ManyToMany(mappedBy = "students") private Set<Teacher> teachers = new HashSet<Teacher>(); // getter and setter }
本文出自 “冰葫芦” 博客,请务必保留此出处http://shenlang7.blog.51cto.com/3102414/1742813
原文:http://shenlang7.blog.51cto.com/3102414/1742813