public void create(BarEntity bar) throws PreexistingEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); ContractEntity contract = bar.getContract(); if (contract != null) { contract = em.getReference(contract.getClass(), contract.getId()); bar.setContract(contract); } em.persist(bar); if (contract != null) { contract.getBarCollection().add(bar); contract = em.merge(contract); } em.getTransaction().commit(); } catch (Exception ex) { if (findBar(bar.getId()) != null) { throw new PreexistingEntityException("Bar " + bar + " already exists.", ex); } throw ex; } finally { if (em != null /*&& em.isOpen()*/) { em.close(); } } }
public void edit(BarEntity bar) throws NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); BarEntity persistentBar = em.find(BarEntity.class, bar.getId()); ContractEntity contractOld = persistentBar.getContract(); ContractEntity contractNew = bar.getContract(); if (contractNew != null) { contractNew = em.getReference(contractNew.getClass(), contractNew.getId()); bar.setContract(contractNew); } bar = em.merge(bar); if (contractOld != null && !contractOld.equals(contractNew)) { contractOld.getBarCollection().remove(bar); contractOld = em.merge(contractOld); } if (contractNew != null && !contractNew.equals(contractOld)) { contractNew.getBarCollection().add(bar); contractNew = em.merge(contractNew); } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = bar.getId(); if (findBar(id) == null) { throw new NonexistentEntityException("The bar with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }