JPAは、すでに永続化されている(そして切り離されていない)エンティティーで永続化をカスケードしようとしますか?
明確にするために、これが私の状況です:私は新しいユーザーを永続させたいです:
public void addUser(){
//User is an entity that is related to many Groups
//The relationship on User side is marked with cascade persist
User user = new User();
user.setName("foo");
user.setGroups(new ArrayList<Groups>());
//selectedGroups is an List of Groups previously created with persistent Groups
for(Group g : this.selectedGroups){
user.getGroups().add(this.groupDao.find(g.getId()));
}
//At this point, User.getGroups() is a list of Managed Entities
//What happens on the following line?
userDao.persist(user);
}
それで、何が起こりますか?JPAは、user.getGroups()内のすべてのグループを(再び)永続化しようとしますか?それとも、それらのグループがすでに存在していることを検出し、新しい関係を更新するだけですか?
「はい、それは再び持続します」の場合、そのコードを正しく機能させるために、この関係にどのように注釈を付ける必要がありますか?