以下代码不起作用
User user = new User();
Project project = new Project();
project.setOwner(user);
projectRepository.delete(project);
assertEquals(0, user.getProjects().size());
我应该如何配置关联以实现此目的?
目前我有
public class User {
@OneToMany(mappedBy = "owner")
private Set<Project> projects = new HashSet<Project>();
}
public class Project {
@ManyToOne
private User owner;
}
测试返回
java.lang.AssertionError:
Expected :0
Actual :1
答案 0 :(得分:0)
在一对多关系中,应该级联从父级到子级删除,而不是相反。如果同一用户拥有3个项目,在您的方案中会发生什么?您删除了一个项目,但是不能删除用户权限?因为他还有2个项目。
查看有关此主题的这篇不错的文章: https://vladmihalcea.com/a-beginners-guide-to-jpa-and-hibernate-cascade-types/ (作者实际上在这里回答了许多有关hibenrate的问题)