У меня есть три модельных класса, Студент, Рабочее место, Неделя, которые я пытаюсь сохранить, используя Annotations
. Каждый ученик может иметь несколько рабочих мест в неделю, поэтому в классе ученика есть поле Map<Week, List<Workplace>>
. Но я не нахожу решение, чтобы отобразить это в БД.
Мне удалось сохранить @ManyToMany
отношения между Student и Workplace, используя JoinTable
с Student_id, Workplace_id и Week_id в качестве столбцов в таблице БД, но то, что эти карты - просто поле Map<Week, Workplace>
в классе Student.
Вот упрощенные классы моделей с Annotations
, которые я в последний раз пробовал. Я получаю ошибку Use of @OneToMany or @ManyToMany targeting an unmapped class: model.Student.studentsWorkplaces[java.util.List]
.
@Entity
public class Student {
@Id
private Integer id;
@ManyToMany
@JoinTable(name = "STUDENTS_WORKPLACES",
joinColumns = @JoinColumn(name = "STUDENT"),
inverseJoinColumns = @JoinColumn(name = "WEEK"))
@MapKeyJoinColumn(name = "WORKPLACE")
private Map<Week, List<Workplace>> studentsWorkplaces;
// Getters, Setters
}
@Entity
public class Workplace {
@Id
private Integer id;
@ManyToMany(mappedBy="studentsWorkplaces")
private Map<Week, Student> workplaceStudents;
// Getters, Setters
}
@Entity
public class Week {
@Id
private String week_year;
@ManyToMany(mappedBy="studentsWorkplaces")
private List<Student> students;
@ManyToMany(mappedBy="studentsWorkplaces")
private List<Workplace> workplaces;
// Getters, Setters
}
Спасибо за любую помощь!