OneToMany関係からエンティティを削除する際に、最小限の労力が必要です。私は、これらのセットにエンティティを追加するだけで多くの例が見つかる(それはうまくいく)が、エンティティを削除することははるかに難しい。OneToMany関係のエンティティを削除します
私は以下のクラスがあります。私はそれが製品や専門家で満たされてい
@Entity
public class Product {
...
OneToMany(mappedBy="product", orphanRemoval=true,
cascade={CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch=FetchType.EAGER)
Set<Expert> experts = new HashSet<Expert>();
...
}
@Entity
public class Expert {
...
@ManyToOne(optional=false)
Product product;
@ManyToOne(optional=false)
Person person;
...
}
(人が製品に似ている)
を。私は、エキスパートエンティティが完全に削除されるように、エキスパートを製品リストから削除したいと思います。私は、次のコードのいずれかが十分であろうと期待される:
Product aProduct = findAProduct(...);
Expert anExpert aProduct.getExperts.get(...); // Just get the first expert that I want removed
EntityManager em = entityManager();
em.getTransaction().begin();
aProduct.getExperts().remove(anExpert);
em.merge(aProduct);
em.getTransaction().commit();
か:
em.getTransaction().begin();
em.remove(anExpert);
em.getTransaction().commit();
はこの単純すぎますか? JPAによって何が行われ、自分は何をしなければならないのですか?以前はクエリを使用して解決しましたが、JPAがこれを実行できると期待しています。
これら2つの手法を試しましたか?それは何を与えるのですか? –