public void edit(Usuario usuario) throws NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Usuario persistentUsuario = em.find(Usuario.class, usuario.getIdUsuario()); Collection<Detalle> detalleCollectionOld = persistentUsuario.getDetalleCollection(); Collection<Detalle> detalleCollectionNew = usuario.getDetalleCollection(); Collection<Detalle> attachedDetalleCollectionNew = new ArrayList<Detalle>(); for (Detalle detalleCollectionNewDetalleToAttach : detalleCollectionNew) { detalleCollectionNewDetalleToAttach = em.getReference( detalleCollectionNewDetalleToAttach.getClass(), detalleCollectionNewDetalleToAttach.getIdDetalle()); attachedDetalleCollectionNew.add(detalleCollectionNewDetalleToAttach); } detalleCollectionNew = attachedDetalleCollectionNew; usuario.setDetalleCollection(detalleCollectionNew); usuario = em.merge(usuario); for (Detalle detalleCollectionOldDetalle : detalleCollectionOld) { if (!detalleCollectionNew.contains(detalleCollectionOldDetalle)) { detalleCollectionOldDetalle.setIdUsuario(null); detalleCollectionOldDetalle = em.merge(detalleCollectionOldDetalle); } } for (Detalle detalleCollectionNewDetalle : detalleCollectionNew) { if (!detalleCollectionOld.contains(detalleCollectionNewDetalle)) { Usuario oldIdUsuarioOfDetalleCollectionNewDetalle = detalleCollectionNewDetalle.getIdUsuario(); detalleCollectionNewDetalle.setIdUsuario(usuario); detalleCollectionNewDetalle = em.merge(detalleCollectionNewDetalle); if (oldIdUsuarioOfDetalleCollectionNewDetalle != null && !oldIdUsuarioOfDetalleCollectionNewDetalle.equals(usuario)) { oldIdUsuarioOfDetalleCollectionNewDetalle .getDetalleCollection() .remove(detalleCollectionNewDetalle); oldIdUsuarioOfDetalleCollectionNewDetalle = em.merge(oldIdUsuarioOfDetalleCollectionNewDetalle); } } } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = usuario.getIdUsuario(); if (findUsuario(id) == null) { throw new NonexistentEntityException("The usuario with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }
public void destroy(Integer id) throws NonexistentEntityException { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Usuario usuario; try { usuario = em.getReference(Usuario.class, id); usuario.getIdUsuario(); } catch (EntityNotFoundException enfe) { throw new NonexistentEntityException( "The usuario with id " + id + " no longer exists.", enfe); } Collection<Detalle> detalleCollection = usuario.getDetalleCollection(); for (Detalle detalleCollectionDetalle : detalleCollection) { detalleCollectionDetalle.setIdUsuario(null); detalleCollectionDetalle = em.merge(detalleCollectionDetalle); } em.remove(usuario); em.getTransaction().commit(); } finally { if (em != null) { em.close(); } } }