Как аннотировать 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 в сущностях, чтобы их содержимое правильно сохранялось в данную таблицу?


Ответы (0 шт):