Hi,
I've 2 entities namely User and Project. Each user may be involved in multiple projects and one project obviously has many users. What is the correct way to update data for an user/a project? While updating user info, I need to update project info and vice-versa.
public void updateUserInfo(User user) throws NoSuchUserException,
NoSuchProjectException {
if (user == null || user.getId() == null)
throw new IllegalArgumentException();
findUserByID(user.getId());
Set<Project> projects = user.getProjects();
Set<User> members = null;
if (projects != null) {
for (Project p : projects) {
members = p.getMembers();
if (members == null) {
members = new HashSet<User>() ;
}
members.add(user);
p.setMembers(members);
projectServiceLocal.updateProjectInfo(p);
}
}
em.merge(user);
}
public void updateProjectInfo(Project proj) throws NoSuchProjectException {
if (proj == null)
throw new IllegalArgumentException();
findProjectByID(proj.getId());
Set<User> members = proj.getMembers();
Set<Project> projects = null;
if (members != null) {
for (User user : members) {
projects = user.getProjects();
if (projects == null) {
projects = new HashSet<Project>() ;
}
projects.add(proj);
user.setProjects(projects);
}
}
em.merge(proj);
}
Regards,
Abhijit