首页 > 解决方案 > Hibernate - 删除子项时如何从父项中删除实体

问题描述

以下代码不起作用

        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

标签: javahibernatejunitassociations

解决方案


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

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


推荐阅读