java - 如何在 Java 中创建一个简单的连接表?
问题描述
我正在尝试用 Java 中的两个表建立一个非常简单的数据库,并使用特定的连接表连接它们。
第一个表学生由 id、first_name 和 last_name 组成。
第二个表课程由 id 和 name 组成。
名为 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 命名。我还没有走到那一步。
解决方案
嗨,我会尝试这样的事情......
@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;
}
推荐阅读
- r - 在r中创建递归函数
- c# - Linq List 返回重复数据而不是多个数据集
- reactjs - 如何汇总根组件发送的道具
- python - statsmodels 的 MLEModel 类是否使用期望最大化进行拟合?
- azure - 当后端请求成功时,如何调试从 Azure API 管理到 Front Door 的 502 Bad Gateway 错误响应?
- pentaho - 如何让 XSL 3.0 与 Pentaho XSL Step 一起工作
- python - 将一个文件 Tkinter 条目分配给另一个文件 tkinter 条目
- react-native - 如何制作圆形倒计时/仪表以显示反应原生的剩余天数
- python - 使用 AutoSys 运行 python 脚本时出错
- terraform - 重用在terraform的父模块中声明和定义的变量