我试图用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来命名连接表及其列。我还没走那么远。
答案 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;
}