public void create(Clientes clientes) { if (clientes.getReservacionesCollection() == null) { clientes.setReservacionesCollection(new ArrayList<Reservaciones>()); } EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Collection<Reservaciones> attachedReservacionesCollection = new ArrayList<Reservaciones>(); for (Reservaciones reservacionesCollectionReservacionesToAttach : clientes.getReservacionesCollection()) { reservacionesCollectionReservacionesToAttach = em.getReference( reservacionesCollectionReservacionesToAttach.getClass(), reservacionesCollectionReservacionesToAttach.getReservacionesPK( new ReservacionesPK())); attachedReservacionesCollection.add(reservacionesCollectionReservacionesToAttach); } clientes.setReservacionesCollection(attachedReservacionesCollection); em.persist(clientes); for (Reservaciones reservacionesCollectionReservaciones : clientes.getReservacionesCollection()) { Clientes oldClientesOfReservacionesCollectionReservaciones = reservacionesCollectionReservaciones.getClientes(); reservacionesCollectionReservaciones.setClientes(clientes); reservacionesCollectionReservaciones = em.merge(reservacionesCollectionReservaciones); if (oldClientesOfReservacionesCollectionReservaciones != null) { oldClientesOfReservacionesCollectionReservaciones .getReservacionesCollection() .remove(reservacionesCollectionReservaciones); oldClientesOfReservacionesCollectionReservaciones = em.merge(oldClientesOfReservacionesCollectionReservaciones); } } em.getTransaction().commit(); } finally { if (em != null) { em.close(); } } }
public void edit(Clientes clientes) throws IllegalOrphanException, NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Clientes persistentClientes = em.find(Clientes.class, clientes.getIdClientes()); Collection<Reservaciones> reservacionesCollectionOld = persistentClientes.getReservacionesCollection(); Collection<Reservaciones> reservacionesCollectionNew = clientes.getReservacionesCollection(); List<String> illegalOrphanMessages = null; for (Reservaciones reservacionesCollectionOldReservaciones : reservacionesCollectionOld) { if (!reservacionesCollectionNew.contains(reservacionesCollectionOldReservaciones)) { if (illegalOrphanMessages == null) { illegalOrphanMessages = new ArrayList<String>(); } illegalOrphanMessages.add( "You must retain Reservaciones " + reservacionesCollectionOldReservaciones + " since its clientes field is not nullable."); } } if (illegalOrphanMessages != null) { throw new IllegalOrphanException(illegalOrphanMessages); } Collection<Reservaciones> attachedReservacionesCollectionNew = new ArrayList<Reservaciones>(); // Cambio if (reservacionesCollectionNew != null) { for (Reservaciones reservacionesCollectionNewReservacionesToAttach : reservacionesCollectionNew) { reservacionesCollectionNewReservacionesToAttach = em.getReference( reservacionesCollectionNewReservacionesToAttach.getClass(), reservacionesCollectionNewReservacionesToAttach.getReservacionesPK( new ReservacionesPK())); attachedReservacionesCollectionNew.add(reservacionesCollectionNewReservacionesToAttach); } } reservacionesCollectionNew = attachedReservacionesCollectionNew; clientes.setReservacionesCollection(reservacionesCollectionNew); clientes = em.merge(clientes); // Cambio if (reservacionesCollectionNew != null) { for (Reservaciones reservacionesCollectionNewReservaciones : reservacionesCollectionNew) { if (!reservacionesCollectionOld.contains(reservacionesCollectionNewReservaciones)) { Clientes oldClientesOfReservacionesCollectionNewReservaciones = reservacionesCollectionNewReservaciones.getClientes(); reservacionesCollectionNewReservaciones.setClientes(clientes); reservacionesCollectionNewReservaciones = em.merge(reservacionesCollectionNewReservaciones); if (oldClientesOfReservacionesCollectionNewReservaciones != null && !oldClientesOfReservacionesCollectionNewReservaciones.equals(clientes)) { oldClientesOfReservacionesCollectionNewReservaciones .getReservacionesCollection() .remove(reservacionesCollectionNewReservaciones); oldClientesOfReservacionesCollectionNewReservaciones = em.merge(oldClientesOfReservacionesCollectionNewReservaciones); } } } } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = clientes.getIdClientes(); if (findClientes(id) == null) { throw new NonexistentEntityException("The clientes with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }