繁体   English   中英

多对多关系中的删除孤儿 - JPA

[英]Delete-Orphan in ManyToMany Relation - 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

我的关系是单向的,在“ItemOrcamento”中我不想要一个 Set,因为我不需要,所以在 ItemOrcamento 中我没有任何引用 joinTable“item_consulta”的 @ManyToMany 注释

首先,您需要从收藏中手动删除不需要的项目,然后添加新项目:

consulta.remove(item1);   
consulta.addItem(item3);    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM