powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / @ManyToMany с дубликатами
1 сообщений из 1, страница 1 из 1
@ManyToMany с дубликатами
    #40138685
MVTalent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток! Есть сущности
Код: Java
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<>();

}
Код: Java
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<>();
}
Есть таблицы
Код: SQL
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 возникают ошибки
Код: Java
1.
Found shared references to a collection: Student.courses
Как можно в данном случае реализовать связь многие-ко-многим? Пробовал решение https://stackoverflow.com/questions/77016233/hibernate-found-shared-references-to-a-collection-exception, но в итоге падает при попытке получения данных по student
Код: Java
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
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / @ManyToMany с дубликатами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]