1

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

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

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

4

1 回答 1

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);
于 2015-05-05T16:59:09.490 回答