ManyToMany关系中的删除孤儿 - JPA

时间:2013-11-04 13:45:45

标签: java hibernate jpa

好吧,我有一张名为'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

我的关系是UNI-DIRECTIONAL,在“ItemOrcamento”中我不想要Set,因为我不需要,所以在ItemOrcamento中我没有任何@ManyToMany anotation引用joinTable“item_consulta”

0 个答案:

没有答案