Доброго времени суток! Есть сущности
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@Data
@Entity
@Table(name = "student")
public class Student implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private UUID studentId;
private String studentName;
private Integer studentStatus;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "student_course",
joinColumns = @JoinColumn(name = "student_id", referencedColumnName = "studentId"),
inverseJoinColumns = @JoinColumn(name = "course_id", referencedColumnName = "courseId"))
private Set<Course> courses = new HashSet<>();
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@Data
@Entity
@Table(name = "course")
public class Course implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private UUID courseId;
private String courseCode;
private String courseName;
private BigDecimal courseCost;
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "courses")
private Set<Student> students = new HashSet<>();
}
Есть таблицы
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE TABLE IF NOT EXISTS student
(
id BIGSERIAL CONSTRAINT student_pk PRIMARY KEY,
student_id UUID,
student_name VARCHAR,
student_status INTEGER
);
CREATE TABLE IF NOT EXISTS course
(
id BIGSERIAL CONSTRAINT course_pk PRIMARY KEY,
course_id UUID,
course_code VARCHAR,
course_name VARCHAR,
course_cost NUMERIC
);
CREATE TABLE IF NOT EXISTS student_course
(
student_id UUID,
course_id UUID,
CONSTRAINT student_course_pk PRIMARY KEY (student_id, course_id)
);
Так исторически сложилось, что в таблицах student и course могут быть дубли по полям student_id и course_id
id |
student_id |
student_name |
student_status |
1 |
854ff7f5-6802-4d56-b712-71ee4027fb89 |
student name |
1 |
2 |
854ff7f5-6802-4d56-b712-71ee4027fb89 |
student name |
1 |
3 |
854ff7f5-6802-4d56-b712-71ee4027fb89 |
student name |
1 |
id |
course_id |
course_code |
course_name |
course_cost |
1 |
346d8e56-5f0e-4e11-b777-ec18df0c5c9f |
QWERT-1 |
QWERT-1 |
500 |
2 |
346d8e56-5f0e-4e11-b777-ec18df0c5c9f |
QWERT-1 |
QWERT-1 |
500 |
И при работе с сущностью student возникают ошибки
1.
Found shared references to a collection: Student.courses
Как можно в данном случае реализовать связь многие-ко-многим? Пробовал решение
https://stackoverflow.com/questions/77016233/hibernate-found-shared-references-to-a-collection-exception, но в итоге падает при попытке получения данных по student
1.
2.
Exception occurred inside setter of Student.courses; nested exception is org.hibernate.PropertyAccessException with root cause
org.hibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed