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




Привет, я бы попробовал что-то вроде этого ...
@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;
}
Спасибо, этот ответ на самом деле очень похож на тот, который я в конце концов придумал, поэтому я приму это.