【问题标题】:Delete elements from one-to-many relationships when removing them from a JPA Entity从 JPA 实体中删除元素时从一对多关系中删除元素
【发布时间】:2011-10-23 21:29:06
【问题描述】:

我将 JPA (Hibernate) 与以下具有一对多关系的实体类一起使用。

当我将元素添加到列表中,然后持久化组织实体时,它会将新元素添加到 proyects 表中,但是当我从列表中删除元素时,持久化(或合并)时没有任何反应,我想这些元素将从数据库中删除。

我在 OneToMany 注释中也尝试过 orphanRemoval=true,但它不起作用。

@Entity
public class Organization {     

    @Id
    @GeneratedValue
    public long internalId;

    @Basic
    @Column(nullable = false, length = 100)
    private String name;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "organization")
    private List<Proyect> proyects;

    // Getters and Setters
}

【问题讨论】:

    标签: java database hibernate jpa


    【解决方案1】:

    您需要将 Proyect.organization 设置为 null 并更新该实体,因为此属性负责数据库条目(在这种情况下,Proyect 是拥有方)。

    【讨论】:

    • 这不起作用,在数据库中 Proyect 表被更新为外键等于 null
    • @greuze 将外键设置为 null 是您从组织中删除项目时想要的,不是吗?如果您不删除外键,该项目仍然是组织的一部分。
    • 项目只是组织的一部分(一个项目不能在两个组织中),所以我希望当我从组织的项目列表中删除一个项目时,它也从数据库中删除跨度>
    • @greuze 我明白了。尝试将 Hibernate 注释 @Cascade( CascadeType.DELETE_ORPHAN) 添加到您的列表定义中。
    • 您找到解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 2014-03-26
    • 2022-08-17
    • 2018-02-22
    • 1970-01-01
    • 2014-05-05
    • 2016-03-06
    • 2013-02-14
    相关资源
    最近更新 更多