java—在多个关系中插入数据

xytpbqjk  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(243)

我有两个班有很多关系。
学生.java

@Entity
public class Student {
    @Id
    private Long id;
    private String name;

    @ManyToMany(cascade = {CascadeType.ALL})
    @JoinTable(name = "student_class", joinColumns = {@JoinColumn(name = "student_id")},
                                        inverseJoinColumns = {@JoinColumn(name = "class_id")})
    private List<Class> classList = new ArrayList<>();
}

类.java

@Entity
public class Class {
    @Id
    @GeneratedValue
    private Long id;
    private String name;

    @ManyToMany(mappedBy = "classList",cascade = {CascadeType.ALL})
    private List<Student> students;
}

我的问题是如何在控制器中实现post请求?我是否将班级添加到学生的班级列表中,学生将自动被插入到学生列表中?

k4ymrczo

k4ymrczo1#

jpa将实际监视引用的类是 mappedBy .
这意味着jpa在保存、更新或删除期间将考虑 Student 坚持住 classList . 因此,你在这里写的级联没有意义。

@ManyToMany(mappedBy = "classList",cascade = {CascadeType.ALL})
    private List<Student> students;

唯一能真正起作用的级联就是用 mappedBy ```
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "student_class", joinColumns = {@JoinColumn(name = "student_id")},
inverseJoinColumns = {@JoinColumn(name = "class_id")})
private List classList = new ArrayList<>();

所以你的问题
我是否将班级添加到学生的班级列表中,学生将自动被插入到学生列表中?
是的,它将被添加到列表中,以便您可以看到它,但它不会考虑您对该学生列表所做的任何更改。因此,如果您直接在studentlist上进行修改,那么这些修改将不会保留在您的数据库中。

相关问题