从JPA元素集合中删除元素

时间:2015-05-05 16:37:14

标签: jpa embeddable

好吧,我有一个餐厅实体,其元素集合分支。现在我的问题是如何从餐馆中删除分支,因为Embeddable对象没有Id。通常,我会做什么如果分支是一个实体是

entityManager.remove(entityManager.getReference(Branch.class,branchId));

但由于Branch是Embeddable对象(没有ID),我不知道如何实现它。一些代码示例将受到高度赞赏。提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要标识要删除的对象(显然没有id,因为没有,但是其他字段的组合应该是唯一的),将其从所有者实体的集合中删除并合并实体。

由于没有id,JPA将从集合中删除所有元素,并再次插入它们,但不删除它们。

Branch toBoRemoved = ...; // find out which element needs to be removed
for (Iterator i = entity.getBranches().iterator(); i.hasNext();) {
    Branch b = (Branch)i.next();
    if (b.equals(toBeRemoved)) {  // you'll need to implement this
        i.remove();
    }
}
entityManager.merge(entity);