Я просто попытаюсь выяснить, как сопоставить следующую ситуацию в Hibernate.Спящий режим. Как сопоставить два многого для одного и того же объекта
Есть несколько курсов и некоторые студенты. У любого учащегося есть собственный план обучения, содержащий дополнительные курсы и необходимые курсы.
Мне легко моделировать это в мире базы данных. Я бы четыре таблицы:
- курс (идентификатор, название, описание)
- Student (номер, имя)
- student_course_optional (student_id, course_id)
- student_course_required (student_id, course_id)
Но я действительно не представляю, как сопоставить это с зимним спящим.
Вот мой первый проект:
@Entity
public class Student {
private Long id;
private Long version;
private String name;
private List<Course> requiredCourses;
private List<Course> optionalCourses;
...
@ManyToMany
@JoinTable(name="Course")
public List<Course> getRequiredCourses() {
return requiredCourses;
}
@ManyToMany
@JoinTable(name="Course")
public List<Course> getOptionalCourses() {
return optionalCourses;
}
}
@Entity
public class Course {
private Long id;
private Long version;
private String name;
private List<Student> students;
private List<Student> optionalStudents;
...
@ManyToMany(mappedBy="requiredCourses")
public List<Course> getStudents() {
return requiredCourses;
}
@ManyToMany(mappedBy="optionalCourses")
public List<Course> getOptionalStudents() {
return optionalCourses;
}
}
Но как-то это выглядит странно для меня. Или это правильно?
Допустимо ли для вас, чтобы изменить модель базы данных немного: заменить _student_course_optional_ и _student_course_required_ таблицы например, _student_course (student_id, course_id, необязательно) _? – wypieprz
@wypieprz Да, кажется, еще лучше :) – Tima