好吧,我有一张名为“Orcamento”的桌子,里面有很多“ItemOrcamento”。我还有一张名为“Consulta”的桌子,里面也有很多“ItemOrcamento”。
“Consulta”表可以有很多“ItemOrcamento”,一个“ItemOrcamento”可以在多个“Consulta”中。
了解场景后,我将解释我的问题: 在 JPA 中,我做了以下关系:
@ManyToMany(fetch = javax.persistence.FetchType.LAZY)
@JoinTable(name = "item_consulta", joinColumns = { @JoinColumn(name = "id_consulta") }, inverseJoinColumns = { @JoinColumn(name = "id_item_orcamento") })
private Set<ItemOrcamento> itens;
当我用很多“ItemOrcamento”创建一个新的“Consulta”时,这些行通常插入到表“item_consulta”中。想象一下这样的事情:
consulta.addItem(item1);
consulta.addItem(item2);
但是现在我想将 item1 替换为 item3,所以我这样做了:
consulta.addItem(item3);
consulta.addItem(item2);
在我看来,Hibernate(JPA)必须删除孤立的“item1”并添加“item3”,但它只是添加“item3”并且“item1”继续在数据库中。
我该如何解决?
编辑 1
我的关系是单向的,在“ItemOrcamento”中我不想要一个 Set,因为我不需要,所以在 ItemOrcamento 中我没有任何引用 joinTable“item_consulta”的 @ManyToMany 注释