public void create(FenomenosClimaticos fenomenosClimaticos) throws PreexistingEntityException, Exception {
        if (fenomenosClimaticos.getHistoricoPrecioList() == null) {
            fenomenosClimaticos.setHistoricoPrecioList(new ArrayList<HistoricoPrecio>());
        }
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Ciudad idCiudad = fenomenosClimaticos.getIdCiudad();
            if (idCiudad != null) {
                idCiudad = em.getReference(idCiudad.getClass(), idCiudad.getIdCiudad());
                fenomenosClimaticos.setIdCiudad(idCiudad);
            }
            List<HistoricoPrecio> attachedHistoricoPrecioList = new ArrayList<HistoricoPrecio>();
            for (HistoricoPrecio historicoPrecioListHistoricoPrecioToAttach : fenomenosClimaticos.getHistoricoPrecioList()) {
                historicoPrecioListHistoricoPrecioToAttach = em.getReference(historicoPrecioListHistoricoPrecioToAttach.getClass(), historicoPrecioListHistoricoPrecioToAttach.getIdHistoricoPrecio());
                attachedHistoricoPrecioList.add(historicoPrecioListHistoricoPrecioToAttach);
            }
            fenomenosClimaticos.setHistoricoPrecioList(attachedHistoricoPrecioList);
            em.persist(fenomenosClimaticos);
            if (idCiudad != null) {
                idCiudad.getFenomenosClimaticosList().add(fenomenosClimaticos);
                idCiudad = em.merge(idCiudad);
            }
            for (HistoricoPrecio historicoPrecioListHistoricoPrecio : fenomenosClimaticos.getHistoricoPrecioList()) {
                FenomenosClimaticos oldIdFenomenoClimaticoOfHistoricoPrecioListHistoricoPrecio = historicoPrecioListHistoricoPrecio.getIdFenomenoClimatico();
                historicoPrecioListHistoricoPrecio.setIdFenomenoClimatico(fenomenosClimaticos);
                historicoPrecioListHistoricoPrecio = em.merge(historicoPrecioListHistoricoPrecio);
                if (oldIdFenomenoClimaticoOfHistoricoPrecioListHistoricoPrecio != null) {
                    oldIdFenomenoClimaticoOfHistoricoPrecioListHistoricoPrecio.getHistoricoPrecioList().remove(historicoPrecioListHistoricoPrecio);
                    oldIdFenomenoClimaticoOfHistoricoPrecioListHistoricoPrecio = em.merge(oldIdFenomenoClimaticoOfHistoricoPrecioListHistoricoPrecio);
                }
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            if (findFenomenosClimaticos(fenomenosClimaticos.getIdFenomenoClimatico()) != null) {
                throw new PreexistingEntityException("FenomenosClimaticos " + fenomenosClimaticos + " already exists.", ex);
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }