hibernate4之多对多关系映射(五)

示例:一个老师(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
}



你可能感兴趣的:(hibernate4之多对多关系映射(五))