Можно сопоставить ManyToMany
ассоциацию, используя Map
, и типичный вариант использования для этого вида отображения - когда у вас есть троичная ассоциация.Например, если у вас есть:
<b>STUDENT_TEACHER_COURSE</b>
STUDENT_ID(FK, PK)
TEACHER_ID(FK, PK)
COURSE_ID (FK, PK)
Тогда вы можете определить следующее отображение (при условии, что вы используете аннотации Hibernate <3.5): </p>
@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 ;
...
}
Но Iне думаю, что вы можете иметь «вложенный» List<Teacher>
в качестве значения внутри Map
, я не думаю, что Hibernate может отобразить это, и я бы подумал вместо этого получить List
от сущности.
Ссылки
- Аннотации спящего режима 3.4 Справочное руководство
- Аннотации Hibernate 3.5 Справочное руководство
Ресурсы