如何通过执行以下代码从我的数据库中删除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;
}
答案 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个小时前它没有帮助我。