public void create(Software software) throws PreexistingEntityException, RollbackFailureException, Exception {
        if (software.getComputadoraCollection() == null) {
            software.setComputadoraCollection(new ArrayList<Computadora>());
        }
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Collection<Computadora> attachedComputadoraCollection = new ArrayList<Computadora>();
            for (Computadora computadoraCollectionComputadoraToAttach : software.getComputadoraCollection()) {
                computadoraCollectionComputadoraToAttach = em.getReference(computadoraCollectionComputadoraToAttach.getClass(), computadoraCollectionComputadoraToAttach.getIdComputadora());
                attachedComputadoraCollection.add(computadoraCollectionComputadoraToAttach);
            }
            software.setComputadoraCollection(attachedComputadoraCollection);
            em.persist(software);
            for (Computadora computadoraCollectionComputadora : software.getComputadoraCollection()) {
                computadoraCollectionComputadora.getSoftwareCollection().add(software);
                computadoraCollectionComputadora = em.merge(computadoraCollectionComputadora);
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            try {
                em.getTransaction().rollback();
            } catch (Exception re) {
                throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
            }
            if (findSoftware(software.getIdSoftware()) != null) {
                throw new PreexistingEntityException("Software " + software + " already exists.", ex);
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }