Как создать простую таблицу соединений в Java?

Я пытаюсь настроить очень простую базу данных с двумя таблицами на Java и подключить их с помощью определенной таблицы подключения.

1-я таблица Student состоит из id, first_name и last_name.

2-я таблица Курс состоит из идентификатора и имени.

Таблица соединений с именем Enrollment должна иметь id_курса и id_студента, происходящие из 1-й и 2-й таблиц.

Моя проблема в том, что я не знаю, как сопоставить идентификаторы при расширении Spring Data JPA AbstractPersistable, в котором есть поле первичного ключа с автоинкрементом.

Мой код:

Ученик:

// Package
// Imports

@Entity
@Data @NoArgsConstructor @AllArgsConstructor
public class Student extends AbstractPersistable<Long> {

    private String first_name;
    private String last_name;

}

Курс:

// Package
// Imports

@Entity
@Data @NoArgsConstructor @AllArgsConstructor
public class Course extends AbstractPersistable<Long> {

    private String name;

}

Я пробовал разные варианты использования аннотации @ManyToMany, но, поскольку идентификатор первичного ключа обрабатывается AbstractPersistable, мне не удалось сопоставить «невидимые» идентификаторы для таблицы соединений.

Я также знаю, что таблица соединений и ее столбцы могут быть названы с помощью @Column, @JoinColumn и @JoinTable. Я еще не зашел так далеко.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
213
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Привет, я бы попробовал что-то вроде этого ...

@Entity
@Data @NoArgsConstructor @AllArgsConstructor
public class Student extends AbstractPersistable<Long> {

    private String first_name;
    private String last_name;

     @ManyToMany(cascade = {
        CascadeType.PERSIST,
        CascadeType.MERGE
    })
    @JoinTable(name = "enrollment",
        joinColumns = @JoinColumn(name = "student_id"),
        inverseJoinColumns = @JoinColumn(name = "course_id")
    )
     private List<Course> courses;

}
@Entity
@Data @NoArgsConstructor @AllArgsConstructor
public class Course extends AbstractPersistable<Long> {

    private String name;

    @ManyToMany(mappedBy = "courses")
    private List<Student> students;

}

Спасибо, этот ответ на самом деле очень похож на тот, который я в конце концов придумал, поэтому я приму это.

Bontano 03.04.2019 20:41

Другие вопросы по теме