Hibernate Отображение вложенной коллекции в Java для отображения таблицы с помощью Java-аннотации? - PullRequest
1 голос
/ 02 октября 2010

Мне трудно написать hibernate-отображение с java-аннотацией для проблемы, как указано ниже.

Проблема:

Таблицы

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 Ответ

2 голосов
/ 03 октября 2010

Можно сопоставить 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 от сущности.

Ссылки

Ресурсы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...