Hibernate-删除子级时如何从父级中删除实体

时间:2019-01-28 14:51:10

标签: java hibernate junit associations

以下代码不起作用

        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

1 个答案:

答案 0 :(得分:0)

在一对多关系中,应该级联从父级到子级删除,而不是相反。如果同一用户拥有3个项目,在您的方案中会发生什么?您删除了一个项目,但是不能删除用户权限?因为他还有2个项目。

查看有关此主题的这篇不错的文章: https://vladmihalcea.com/a-beginners-guide-to-jpa-and-hibernate-cascade-types/ (作者实际上在这里回答了许多有关hibenrate的问题)