hibernate 在@ManyToMany关系中更新后休眠不需要的删除

qpgpyjmq  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(159)

这些是我的实体
主人:

@ManyToMany
    @JoinTable(
            name = "student_project",
            joinColumns = @JoinColumn(name = "student_id"),
            inverseJoinColumns = @JoinColumn(name = "project_id"))
    private Set<Project> projects;

从动装置:

@ManyToMany(mappedBy = "projects", fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
    private Set<Student> students;

当我更新project时,一切看起来都很好。但是当我更新student时,student_project表中带有students id的所有关系都消失了。我认为这与master表中的级联字段有关,但我不确定。它应该是什么样子的?或者它可能是其他东西?顺便说一句,我使用em. merge(student)/em. merge(project)合并两个实体

li9yvcax

li9yvcax1#

关系的拥有方是Student,所以当你合并一个分离的Student对象时,Hibernate会将projects集合与数据库同步,这与级联无关,这仅仅是关系所有权导致的,如果你合并的Studentprojection为空,student_project中该学员的所有现有项目都将被删除。

相关问题