一个学生可以有多个老师,一个老师也可以有多个学生,所以老师和学生之间的关系就是多对多的关系,这样就需要建立一个中间的关联表来存储关联信息。
- package com.pojo;
- public class Student implements java.io.Serializable {
- private Long id;
- private String name;
- private Long age;
- private String sex;
- public Student() {
- }
- public Long getId() {
- return this.id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Long getAge() {
- return this.age;
- }
- public void setAge(Long age) {
- this.age = age;
- }
- public String getSex() {
- return this.sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- }
- package com.pojo;
- import java.util.HashSet;
- import java.util.Set;
- public class Teacher implements java.io.Serializable {
- private static final long serialVersionUID = -7640561034271065452L;
- private Long id;
- private String name;
- private String sourcename;
- //多对多单向关联
- private Set<Student> students = new HashSet<Student>() ;
- public Teacher() {
- }
- public Long getId() {
- return this.id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getSourcename() {
- return this.sourcename;
- }
- public void setSourcename(String sourcename) {
- this.sourcename = sourcename;
- }
- public Set<Student> getStudents() {
- return students;
- }
- public void setStudents(Set<Student> students) {
- this.students = students;
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!--
- Mapping file autogenerated by MyEclipse Persistence Tools
- -->
- <hibernate-mapping>
- <class name="com.pojo.Teacher" table="TEACHER" schema="ZM">
- <id name="id" type="java.lang.Long">
- <column name="ID" precision="4" scale="0" />
- <generator class="increment" />
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" length="100" />
- </property>
- <property name="sourcename" type="java.lang.String">
- <column name="SOURCENAME" length="100" />
- </property>
- <!--
- 多对多单向关联,table标识关联表,key里面column属性代表该类(Teacher)在关联表里面的键是teacher_id
- many-to-many 里面class属性是set里面的类型,后面的column是指该类在关联表里面的外键
- outer-join="true" 外连接
- cascade="save-update" 级联操作
- -->
- <set name="students" table="stutea" outer-join="true" cascade="save—update">
- <key column="teacher_id"></key>
- <many-to-many class="com.pojo.Student" column="student_id"/>
- </set>
- </class>
- </hibernate-mapping>