从 JPA 元素集合中删除元素

Removing element from JPA element Collection

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

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

但由于 Branch 是可嵌入对象(没有 ID),我不确定如何实现它。一些代码示例将不胜感激。提前致谢。

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

由于没有 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);