如何在 Java 中创建一个简单的连接 table?

How to create a simple connection table in Java?

我正在尝试在 Java 中使用两个 table 设置一个非常简单的数据库,并使用特定连接 table.

连接它们

第一个table学生由id、first_name和last_name组成。

第 2 table 课程由 ID 和名称组成。

名为 Enrollment 的连接 table 应具有源自第一个和第二个 table 的 course_id 和 student_id。

我的问题是我不知道如何在扩展 Spring Data JPA 的 AbstractPersistable 时映射 ID,其中有一个自动递增的主键字段。

我的代码:

学生:

// 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 注释的不同用法,但由于主键 ID 由 AbstractPersistable 处理,我未能映射 'invisible' 连接的 ID table .

我也知道连接table和它的列可以用@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;

}