我面临着使用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属性指定注释。
答案 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
。