通过父级保存删除实体



如何通过执行以下代码从数据库中删除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;
}

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

尝试:

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

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

最新更新