这些是我的实体
主人:
@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)合并两个实体
1条答案
按热度按时间li9yvcax1#
关系的拥有方是
Student
,所以当你合并一个分离的Student
对象时,Hibernate会将projects
集合与数据库同步,这与级联无关,这仅仅是关系所有权导致的,如果你合并的Student
的projection
为空,student_project
中该学员的所有现有项目都将被删除。