public void create(Beneficiario beneficiario) throws PreexistingEntityException, Exception { if (beneficiario.getCotizanteList() == null) { beneficiario.setCotizanteList(new ArrayList<Cotizante>()); } EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); List<Cotizante> attachedCotizanteList = new ArrayList<Cotizante>(); for (Cotizante cotizanteListCotizanteToAttach : beneficiario.getCotizanteList()) { cotizanteListCotizanteToAttach = em.getReference( cotizanteListCotizanteToAttach.getClass(), cotizanteListCotizanteToAttach.getCedula()); attachedCotizanteList.add(cotizanteListCotizanteToAttach); } beneficiario.setCotizanteList(attachedCotizanteList); em.persist(beneficiario); for (Cotizante cotizanteListCotizante : beneficiario.getCotizanteList()) { cotizanteListCotizante.getBeneficiarioList().add(beneficiario); cotizanteListCotizante = em.merge(cotizanteListCotizante); } em.getTransaction().commit(); } catch (Exception ex) { if (findBeneficiario(beneficiario.getIDBeneficiario()) != null) { throw new PreexistingEntityException( "Beneficiario " + beneficiario + " already exists.", ex); } throw ex; } finally { if (em != null) { em.close(); } } }
public void edit(Beneficiario beneficiario) throws NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Beneficiario persistentBeneficiario = em.find(Beneficiario.class, beneficiario.getIDBeneficiario()); List<Cotizante> cotizanteListOld = persistentBeneficiario.getCotizanteList(); List<Cotizante> cotizanteListNew = beneficiario.getCotizanteList(); List<Cotizante> attachedCotizanteListNew = new ArrayList<Cotizante>(); for (Cotizante cotizanteListNewCotizanteToAttach : cotizanteListNew) { cotizanteListNewCotizanteToAttach = em.getReference( cotizanteListNewCotizanteToAttach.getClass(), cotizanteListNewCotizanteToAttach.getCedula()); attachedCotizanteListNew.add(cotizanteListNewCotizanteToAttach); } cotizanteListNew = attachedCotizanteListNew; beneficiario.setCotizanteList(cotizanteListNew); beneficiario = em.merge(beneficiario); for (Cotizante cotizanteListOldCotizante : cotizanteListOld) { if (!cotizanteListNew.contains(cotizanteListOldCotizante)) { cotizanteListOldCotizante.getBeneficiarioList().remove(beneficiario); cotizanteListOldCotizante = em.merge(cotizanteListOldCotizante); } } for (Cotizante cotizanteListNewCotizante : cotizanteListNew) { if (!cotizanteListOld.contains(cotizanteListNewCotizante)) { cotizanteListNewCotizante.getBeneficiarioList().add(beneficiario); cotizanteListNewCotizante = em.merge(cotizanteListNewCotizante); } } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { String id = beneficiario.getIDBeneficiario(); if (findBeneficiario(id) == null) { throw new NonexistentEntityException( "The beneficiario with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }