Hi, I have a webapplication with jsf and ejb.If I try to delete relations between entities I always run into the same problem. The id of the objects are not the same so I can delete them from the list.
For example: Relation Course/CmtUser Course.java | @ManyToMany(fetch=FetchType.EAGER) | @IndexColumn(name="INDEX_COL") | private List<CmtUser> participants = new ArrayList<CmtUser>(); CmtUser.java @ManyToMany(mappedBy="members", fetch=FetchType.EAGER) | @IndexColumn(name="INDEX_COL") | private List <CmtGroup> groups = new ArrayList<CmtGroup>(); Joining a course is not the problem: JSF-managedbean CourseBean: public void joinCourse(){ | currentUser = userHandler.getCmtUserByUserName(getRemoteUserName()); | courseHandler.joinCourse(getCurrentCourseId(),currentUser); | } But if I try to "leave a course" (delete user from course-participant-list) it does not work. I tried it in several ways: 1. Way The managedbean CourseBean invokes the handler and gives the objects to it: public void leaveCourse(){ | courseHandler.leaveCourse(currentCourse, currentUser); | } Then in the handler I tried to remove the user from the course and vice versa public void leaveCourse(Course c, CmtUser user) { | c.getParticipants().remove(user); | user.getCourses().remove(c); | em.merge(c); | em.merge(user); | } Problem: Cannot remove the user from c. participants because the id from the user I not the same as the user in the list participants. The same problem in the 2. Way 2. Way The managedbean CourseBean invokes the handler: public void leaveCourse(){ | courseHandler.leaveCourse(currentCourse.getId(), currentUser.getId()); | } CourseHandler.java public void leaveCourse(Long courseId, Long userId) { | Course course = getCourse(courseId); | CmtUser user = userHandler.getCmtUser(userId); | | course.getParticipants().remove(user); | user.getCourses().remove(course); | em.merge(user); | em.merge(course); | } If I look into course.participants the id from the user in it is another than the id from the user I got with my userHandler with userHandler.getCmtUser(userId);. 3. Way: I remove the elements from the list in the jsfmanagedbean CourseBean: public void leaveCourse(){ | currentCourse.getParticipants().remove(currentUser); | currentUser.getCourses().remove(currentCourse); | courseHandler.updateCourse(currentCourse); | userHandler.updateUser(currentUser); | } The only thing I do in the ejbhandler is to update the objects: CourseHandler.java public void updateCourse(Course course) { | em.merge(course); | } | UserHandler.java public void updateUser(CmtUser cmtUser) { | em.merge(cmtUser); | } But it is the same problem. How do I solve this? Which is the best way to implement this things; in the jsfmanagedbean or in the ejbhandlers? Please I need your help. Thanks Nicki View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4197325#4197325 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4197325 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user