JPAは、すでに永続的な(かつ非デタッチされている)エンティティ上で持続的にカスケードしようとしますか?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>());
//selectedUsers 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()内のすべてのグループを永続化しようとしますか?あるいは、それらのグループがすでに存在していることを検出し、新しい関係を更新するだけですか?
「はい、それはもう一度持続します」の場合、この関係にアノテーションを付けてコードが正しく機能するようにするにはどうすればよいですか?
試してみるとどうなりますか? –
私がテストした限り、エンティティを再び永続化しようとします。しかし、私が何か間違っているかどうかわかりません... –
JPA 2仕様では、3.2.2項「Xが既存の管理対象エンティティの場合、永続操作で無視されます」と記載されています。だから間違ったことをやっている。 –