Как аннотировать Map для сохранения в БД при помощи Spring JPA?
Приложение на Spring MVC, Spring DataJPA, Hibernate. Есть три сущности: студент, учитель, предмет.
Предмет:
@Entity
@Table(name = "themes")
public class Theme {
// поля опущены
}
Студент:
@Entity
@Table(name = "students")
public class Student {
private Map<Theme, Tutor> tutors;
// другие поля опущены
}
Учитель:
@Entity
@Table(name = "tutors")
public class Tutor {
private Map<Theme, Student> students;
// другие поля опущены
}
Для хранение связей вида студент-учитель-предмет я хочу использовать такую таблицу:
CREATE TABLE themes_students_tutors
(
theme_id INTEGER NOT NULL,
student_id INTEGER NOT NULL,
tutor_id INTEGER NOT NULL,
FOREIGN KEY (theme_id) REFERENCES themes (id) ON DELETE CASCADE,
FOREIGN KEY (student_id) REFERENCES students (id) ON DELETE CASCADE,
FOREIGN KEY (tutor_id) REFERENCES tutors (id) ON DELETE CASCADE
)
Как мне следует аннотировать поля tutors и students в сущностях, чтобы их содержимое правильно сохранялось в данную таблицу?