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()中的每个组吗?还是它会检测到这些组已经存在并且只更新新的关系?
如果回答是“是的,它会重新持久化”,我该如何注释这个关系才能使代码正常工作?