如何在 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;
}
我正在尝试在 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;
}