Entity relationship. Many to one - one to many
у меня есть 3 сущности. Course, Module, Lesson
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long courseId;
private String courseName;
private String courseDesc;
private Double coursePrice;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "course_module",
joinColumns = {@JoinColumn(name = "course_id")},
inverseJoinColumns = {@JoinColumn(name = "module_id")})
private Set<Module> moduleSet;
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class Module {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long moduleId;
private String moduleName;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "module", cascade = CascadeType.ALL)
@JsonManagedReference
private List<Lesson> lessonList;
@ManyToMany(mappedBy = "moduleSet")
@JsonBackReference
private Set<Course> courseSet;
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class Lesson {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long lessonId;
private String lessonDesc;
@ManyToOne(fetch = FetchType.EAGER)
@JsonBackReference
private Module module;
Я хочу иметь возможность связывать и доставать объекты с 2-х сторон. Например: при создании курса чтобы я мог добавить в его сет модулей уже созданный модуль. А так же при создании модуля я мог добавить его к какому-то созданному курсу. Точно так же и доставать объекты, чтобы я могу достать по курсу какие модули в нем присудствуют и так же со стороны модуля, узнать в каких курсах он используется. Точно так же с lesson и module. При этом всё, чтобы не возникало рукурсии между объектами. Дело всё в том, что двусторонняя связь не работает, объекты не привязываются друг другу, если убрать несколько свой связей то объекты начинают просто перезаписываться. Подскажите пожалуйста, как правильно и корректно реализовать здесь 2-юю связь. Буду очень лагодарен если оставите пример в выполнением поста и гета в Postman или любой другой вспомогательной программе. Спасибо.