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

时间:2019-03-26 13:51:42

标签: java spring h2 lombok

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

第一个表Student由ID,名字和姓氏组成。

第二张表课程由ID和名称组成。

名为Enrollment的连接表应具有源自第一表和第二表的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处理,因此我无法映射连接表的“不可见” ID。

我还知道可以使用@ Column,@ JoinColumn和@JoinTable来命名连接表及其列。我还没走那么远。

1 个答案:

答案 0 :(得分: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;

}