Hibernate将java中的嵌套集合映射到映射表中的java注释?

时间:2010-10-02 17:24:44

标签: java hibernate collections annotations mapping

我面临着使用java注释编写hibernate映射以解决问题的困难,如下所示。

问题:

表格

Table:Courses_Teachers
columns:
id
course_id
teacher_id
year(academic year)
Table: Courses_Students
columns:
id
course_id
student_id
year(academic year)
Table: Courses_Teachers_Students
course_teacher_id
course_student_id 

class Student {
    Map<Course,List<Teacher>> courseTeachersMap;  
}

要求

  • 可以由多名教师向同一学生组授课程。
  • 课程分配到年级。
  • 年级可以有多个学生组,为课程分配不同的教师组。

请建议我如何为班级学生中的courseTeachersMap属性指定注释。

1 个答案:

答案 0 :(得分:2)

可以使用ManyToMany映射Map关联,这种映射的典型用例是当您有三元关联时。例如,如果您有:

STUDENT_TEACHER_COURSE
STUDENT_ID(FK, PK)
TEACHER_ID(FK, PK)
COURSE_ID (FK, PK)

然后你可以定义以下映射(假设你正在使用Hibernate Annotations&lt; 3.5):

@Entity
public class Student {
    ...
    @ManyToMany
    @JoinTable(
        name="STUDENT_TEACHER_COURSE", 
        joinColumns= { @JoinColumn(name="STUDENT_ID") },
        inverseJoinColumns= { @JoinColumn(name="TEACHER_ID") }
    )
    @MapKeyManyToMany(joinColumns = @JoinColumn(name="COURSE_ID",unique = false))
    protected Map<Course,Teacher> teachers ;
    ...
}

但是我认为你不能在List<Teacher> 中有一个“嵌套”Map值,我不认为Hibernate可以映射那个而且我d考虑改为从实体获取List

参考

资源