【发布时间】:2021-05-17 16:34:41
【问题描述】:
应用程序堆栈:Spring MVC、Spring DataJPA、Hibernate。共有三个实体:student、tutor、theme。
主题:
@Entity
@Table(name = "themes")
public class Theme {
// fields omitted
}
学生:
@Entity
@Table(name = "students")
public class Student {
private Map<Theme, Tutor> tutors;
// other fields omitted
}
导师:
@Entity
@Table(name = "tutors")
public class Tutor {
private Map<Theme, Student> students;
// other fields omitted
}
为了保存student-tutor-theme 关系,我想使用这个表(PostgreSQL):
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 字段,因为它们的内容正确保留在此表中?
【问题讨论】:
-
@MapKeyColumn和@ManyToMany? -
@dan1st 哦,也许吧。但我不知道,我该如何使用它。我了解一般原则,但我对这些注释在我的案例中的具体应用感兴趣
标签: java spring hibernate jpa spring-data-jpa