通过父保存删除实体

时间:2015-11-03 11:35:08

标签: hibernate jpa

如何通过执行以下代码从我的数据库中删除CardParameter

Card card=(Card)sesion.get(id, Card.class);
Set<CardParameter> parameters=card.getCardParameters();
//Some code, that removes a few elements from parameters collection
session.save(card);

当我保存父实体子项时,正确添加,更新,但它们不会被删除。这是我的父子实体:

@Table(name = "card")
@Entity
public class Card {
....
    @OneToMany(mappedBy = "card", orphanRemoval = true, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JsonManagedReference("cardParameter")
    private Set<CardParameter> cardParameters;
}

@Table(name = "card_parameter")
@Entity
public class CardParameter {
....

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "card")
    @JsonBackReference("cardParameter")
    private Card card;
}

2 个答案:

答案 0 :(得分:0)

您似乎没有将反序列化的Card实例中的更改合并到已存在于持久性上下文中的实例。

尝试:

Card card = (Card) sesion.get(id, Card.class);
Card deserializedCard = // serialize, change and deserialize
session.merge(deserializedCard);

答案 1 :(得分:0)

我必须在@OneToMany关系中使用orphanRemoval = true。我不知道为什么,但大约5个小时前它没有帮助我。