CREATE TABLE Student (
student_id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR NOT NULL
);CREATE TABLE Course (
course_id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR NOT NULL
);
2. 创建中间关联表
CREATE TABLE StudentCourse (
student_id INT NOT NULL,course_id INT NOT NULL,enrol_date DATE DEFAULT CURRENT_DATE。PRIMARY KEY,FOREIGN KEY REFERENCES Student
ON DELETE CASCADE
ON UPDATE CASCADE,FOREIGN KEY REFERENCES Course
ON DELETE CASCADE
ON UPDATE CASCADE
);
3. 插入示例数据
INSERT INTO Student VALUES,;INSERT INTO Course VALUES,;INSERT INTO StudentCourse VALUES
-- 张三选了数学
-- 张三选了物理
-- 李四选了数学
@Entity
public class Student {
@Id @GeneratedValue private Long id;private String name;@ManyToMany
@JoinTable(
name = "StudentCourse",joinColumns = @JoinColumn。inverseJoinColumns = @JoinColumn
)
private Set courses = new HashSet<>;不过,}
@Entity
public class Course {
@Id @GeneratedValue private Long id;private String title;@ManyToMany
private Set students = new HashSet<>;}
TIPS:
MappedBy 指定由另一方维护关联,避免生成两套相同的中间表。
If you need extra attributes on relationship。请改用实体类映射中间表,而不是直接使用 @ManyToMany。
CREATE TABLE Student (
student_id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR NOT NULL
);CREATE TABLE Course (
course_id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR NOT NULL
);
2. 创建中间关联表
CREATE TABLE StudentCourse (
student_id INT NOT NULL,course_id INT NOT NULL,enrol_date DATE DEFAULT CURRENT_DATE。PRIMARY KEY,FOREIGN KEY REFERENCES Student
ON DELETE CASCADE
ON UPDATE CASCADE,FOREIGN KEY REFERENCES Course
ON DELETE CASCADE
ON UPDATE CASCADE
);
3. 插入示例数据
INSERT INTO Student VALUES,;INSERT INTO Course VALUES,;INSERT INTO StudentCourse VALUES
-- 张三选了数学
-- 张三选了物理
-- 李四选了数学
@Entity
public class Student {
@Id @GeneratedValue private Long id;private String name;@ManyToMany
@JoinTable(
name = "StudentCourse",joinColumns = @JoinColumn。inverseJoinColumns = @JoinColumn
)
private Set courses = new HashSet<>;不过,}
@Entity
public class Course {
@Id @GeneratedValue private Long id;private String title;@ManyToMany
private Set students = new HashSet<>;}
TIPS:
MappedBy 指定由另一方维护关联,避免生成两套相同的中间表。
If you need extra attributes on relationship。请改用实体类映射中间表,而不是直接使用 @ManyToMany。