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

如何在Java中创建一个简单的连接表?,java,spring,h2,lombok,Java,Spring,H2,Lombok,我试图用Java建立一个非常简单的数据库,其中包含两个表,并使用一个特定的连接表将它们连接起来 第一个表Student由id、名字和姓氏组成 第二个表格课程由id和名称组成 名为Enrollment的连接表应具有源自第一和第二个表的课程id和学生id 我的问题是,在扩展Spring数据JPA的AbstractPersistable时,我不知道如何映射ID,它有一个自动递增的主键字段 我的代码: 学生: // Package // Imports @Entity @Data @NoArgsCon

我试图用Java建立一个非常简单的数据库,其中包含两个表,并使用一个特定的连接表将它们连接起来

第一个表Student由id、名字和姓氏组成

第二个表格课程由id和名称组成

名为Enrollment的连接表应具有源自第一和第二个表的课程id和学生id

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

我的代码:

学生:

// Package
// Imports

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

    private String first_name;
    private String last_name;

}
//包
//进口
@实体
@数据@noargsconstuctor@allargsconstuctor
公共类学生可扩展抽象持久性{
私有字符串名;
私有字符串姓氏;
}
课程:

// Package
// Imports

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

    private String name;

}
//包
//进口
@实体
@数据@noargsconstuctor@allargsconstuctor
公共类课程扩展了可抽象持久性{
私有字符串名称;
}
我尝试了@ManyToMany注释的不同用法,但由于主键ID由AbstractPersistable处理,因此我无法映射连接表的“不可见”ID


我还知道连接表及其列可以用@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;

}
@实体
@数据@noargsconstuctor@allargsconstuctor
公共类学生可扩展抽象持久性{
私有字符串名;
私有字符串姓氏;
@许多(级联={
cascade type.PERSIST,
级联类型合并
})
@JoinTable(name=“注册”,
joinColumns=@JoinColumn(name=“student\u id”),
inverseJoinColumns=@JoinColumn(name=“课程id”)
)
私人名单课程;
}
@实体
@数据@noargsconstuctor@allargsconstuctor
公共类课程扩展了可抽象持久性{
私有字符串名称;
@许多(mappedBy=“courses”)
私人名单学生;
}

谢谢,这个答案实际上与我最终得出的答案非常相似,所以我会接受这个答案。
@Entity
@Data @NoArgsConstructor @AllArgsConstructor
public class Course extends AbstractPersistable<Long> {

    private String name;

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

}