public void create(UnidadeMedida unidadeMedida) {
        if (unidadeMedida.getQualificadorAplicacaoCollection() == null) {
            unidadeMedida.setQualificadorAplicacaoCollection(new ArrayList<QualificadorAplicacao>());
        }
        if (unidadeMedida.getQualificadorProdutoCollection() == null) {
            unidadeMedida.setQualificadorProdutoCollection(new ArrayList<QualificadorProduto>());
        }
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Collection<QualificadorAplicacao> attachedQualificadorAplicacaoCollection = new ArrayList<QualificadorAplicacao>();
            for (QualificadorAplicacao qualificadorAplicacaoCollectionQualificadorAplicacaoToAttach : unidadeMedida.getQualificadorAplicacaoCollection()) {
                qualificadorAplicacaoCollectionQualificadorAplicacaoToAttach = em.getReference(qualificadorAplicacaoCollectionQualificadorAplicacaoToAttach.getClass(), qualificadorAplicacaoCollectionQualificadorAplicacaoToAttach.getCodigoQualificadorAplicacao());
                attachedQualificadorAplicacaoCollection.add(qualificadorAplicacaoCollectionQualificadorAplicacaoToAttach);
            }
            unidadeMedida.setQualificadorAplicacaoCollection(attachedQualificadorAplicacaoCollection);
            Collection<QualificadorProduto> attachedQualificadorProdutoCollection = new ArrayList<QualificadorProduto>();
            for (QualificadorProduto qualificadorProdutoCollectionQualificadorProdutoToAttach : unidadeMedida.getQualificadorProdutoCollection()) {
                qualificadorProdutoCollectionQualificadorProdutoToAttach = em.getReference(qualificadorProdutoCollectionQualificadorProdutoToAttach.getClass(), qualificadorProdutoCollectionQualificadorProdutoToAttach.getCodigoQualificadorProduto());
                attachedQualificadorProdutoCollection.add(qualificadorProdutoCollectionQualificadorProdutoToAttach);
            }
            unidadeMedida.setQualificadorProdutoCollection(attachedQualificadorProdutoCollection);
            em.persist(unidadeMedida);
            for (QualificadorAplicacao qualificadorAplicacaoCollectionQualificadorAplicacao : unidadeMedida.getQualificadorAplicacaoCollection()) {
                UnidadeMedida oldCodigoUnidadeMedidaOfQualificadorAplicacaoCollectionQualificadorAplicacao = qualificadorAplicacaoCollectionQualificadorAplicacao.getCodigoUnidadeMedida();
                qualificadorAplicacaoCollectionQualificadorAplicacao.setCodigoUnidadeMedida(unidadeMedida);
                qualificadorAplicacaoCollectionQualificadorAplicacao = em.merge(qualificadorAplicacaoCollectionQualificadorAplicacao);
                if (oldCodigoUnidadeMedidaOfQualificadorAplicacaoCollectionQualificadorAplicacao != null) {
                    oldCodigoUnidadeMedidaOfQualificadorAplicacaoCollectionQualificadorAplicacao.getQualificadorAplicacaoCollection().remove(qualificadorAplicacaoCollectionQualificadorAplicacao);
                    oldCodigoUnidadeMedidaOfQualificadorAplicacaoCollectionQualificadorAplicacao = em.merge(oldCodigoUnidadeMedidaOfQualificadorAplicacaoCollectionQualificadorAplicacao);
                }
            }
            for (QualificadorProduto qualificadorProdutoCollectionQualificadorProduto : unidadeMedida.getQualificadorProdutoCollection()) {
                UnidadeMedida oldCodigoUnidadeMedidaOfQualificadorProdutoCollectionQualificadorProduto = qualificadorProdutoCollectionQualificadorProduto.getCodigoUnidadeMedida();
                qualificadorProdutoCollectionQualificadorProduto.setCodigoUnidadeMedida(unidadeMedida);
                qualificadorProdutoCollectionQualificadorProduto = em.merge(qualificadorProdutoCollectionQualificadorProduto);
                if (oldCodigoUnidadeMedidaOfQualificadorProdutoCollectionQualificadorProduto != null) {
                    oldCodigoUnidadeMedidaOfQualificadorProdutoCollectionQualificadorProduto.getQualificadorProdutoCollection().remove(qualificadorProdutoCollectionQualificadorProduto);
                    oldCodigoUnidadeMedidaOfQualificadorProdutoCollectionQualificadorProduto = em.merge(oldCodigoUnidadeMedidaOfQualificadorProdutoCollectionQualificadorProduto);
                }
            }
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }