【问题标题】:Hibernate - How to remove entity from parent when deleting childHibernate - 删除子项时如何从父项中删除实体
【发布时间】:2019-01-28 14:51:10
【问题描述】:

以下代码不起作用

        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

【问题讨论】:

    标签: java hibernate junit associations


    【解决方案1】:

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

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

    【讨论】:

    • 我不想级联删除。我想从用户列表中删除项目,但用户仍然需要存在。我想避免从所有指向项目的 OneToMany 中删除。
    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多