Как создать простую таблицу соединений в Java? - PullRequest
0 голосов
/ 26 марта 2019

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

1-я таблица Student состоит из идентификатора, имени и фамилии.

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

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

Моя проблема в том, что я не знаю, как отобразить идентификаторы при расширении SpringPA 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. Я еще не зашел так далеко.

1 Ответ

1 голос
/ 02 апреля 2019

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

@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;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...