1

さて、 Branches の Element Collection を持つ Restaurant エンティティがあります。Embeddable オブジェクトには Id がないため、レストランからブランチを削除するにはどうすればよいですか。通常、ブランチがエンティティである場合、私は何をしますか

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

しかし、Branch は Embeddable オブジェクト (ID なし) であるため、それを実現する方法がわかりません。いくつかのコード例は高く評価されます。前もって感謝します。

4

1 に答える 1

0

削除するオブジェクトを特定し (id がないため明らかに 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 に答える