public void edit(CategHabitacion categHabitacion) throws NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); CategHabitacion persistentCategHabitacion = em.find(CategHabitacion.class, categHabitacion.getCodigoCategoria()); Collection<Habitacion> habitacionCollectionOld = persistentCategHabitacion.getHabitacionCollection(); Collection<Habitacion> habitacionCollectionNew = categHabitacion.getHabitacionCollection(); Collection<Habitacion> attachedHabitacionCollectionNew = new ArrayList<Habitacion>(); for (Habitacion habitacionCollectionNewHabitacionToAttach : habitacionCollectionNew) { habitacionCollectionNewHabitacionToAttach = em.getReference( habitacionCollectionNewHabitacionToAttach.getClass(), habitacionCollectionNewHabitacionToAttach.getNumero()); attachedHabitacionCollectionNew.add(habitacionCollectionNewHabitacionToAttach); } habitacionCollectionNew = attachedHabitacionCollectionNew; categHabitacion.setHabitacionCollection(habitacionCollectionNew); categHabitacion = em.merge(categHabitacion); for (Habitacion habitacionCollectionOldHabitacion : habitacionCollectionOld) { if (!habitacionCollectionNew.contains(habitacionCollectionOldHabitacion)) { habitacionCollectionOldHabitacion.setCodigoCategoria(null); habitacionCollectionOldHabitacion = em.merge(habitacionCollectionOldHabitacion); } } for (Habitacion habitacionCollectionNewHabitacion : habitacionCollectionNew) { if (!habitacionCollectionOld.contains(habitacionCollectionNewHabitacion)) { CategHabitacion oldCodigoCategoriaOfHabitacionCollectionNewHabitacion = habitacionCollectionNewHabitacion.getCodigoCategoria(); habitacionCollectionNewHabitacion.setCodigoCategoria(categHabitacion); habitacionCollectionNewHabitacion = em.merge(habitacionCollectionNewHabitacion); if (oldCodigoCategoriaOfHabitacionCollectionNewHabitacion != null && !oldCodigoCategoriaOfHabitacionCollectionNewHabitacion.equals(categHabitacion)) { oldCodigoCategoriaOfHabitacionCollectionNewHabitacion .getHabitacionCollection() .remove(habitacionCollectionNewHabitacion); oldCodigoCategoriaOfHabitacionCollectionNewHabitacion = em.merge(oldCodigoCategoriaOfHabitacionCollectionNewHabitacion); } } } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = categHabitacion.getCodigoCategoria(); if (findCategHabitacion(id) == null) { throw new NonexistentEntityException( "The categHabitacion with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }
public void create(CategHabitacion categHabitacion) { if (categHabitacion.getHabitacionCollection() == null) { categHabitacion.setHabitacionCollection(new ArrayList<Habitacion>()); } EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Collection<Habitacion> attachedHabitacionCollection = new ArrayList<Habitacion>(); for (Habitacion habitacionCollectionHabitacionToAttach : categHabitacion.getHabitacionCollection()) { habitacionCollectionHabitacionToAttach = em.getReference( habitacionCollectionHabitacionToAttach.getClass(), habitacionCollectionHabitacionToAttach.getNumero()); attachedHabitacionCollection.add(habitacionCollectionHabitacionToAttach); } categHabitacion.setHabitacionCollection(attachedHabitacionCollection); em.persist(categHabitacion); for (Habitacion habitacionCollectionHabitacion : categHabitacion.getHabitacionCollection()) { CategHabitacion oldCodigoCategoriaOfHabitacionCollectionHabitacion = habitacionCollectionHabitacion.getCodigoCategoria(); habitacionCollectionHabitacion.setCodigoCategoria(categHabitacion); habitacionCollectionHabitacion = em.merge(habitacionCollectionHabitacion); if (oldCodigoCategoriaOfHabitacionCollectionHabitacion != null) { oldCodigoCategoriaOfHabitacionCollectionHabitacion .getHabitacionCollection() .remove(habitacionCollectionHabitacion); oldCodigoCategoriaOfHabitacionCollectionHabitacion = em.merge(oldCodigoCategoriaOfHabitacionCollectionHabitacion); } } em.getTransaction().commit(); } finally { if (em != null) { em.close(); } } }