public void create(AccessConfigUser accessConfigUser) {
        if (accessConfigUser.getAccessEspecialesList() == null) {
            accessConfigUser.setAccessEspecialesList(new ArrayList<AccessEspeciales>());
        }
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            AccessPerfiles idPerfiles = accessConfigUser.getIdPerfiles();
            if (idPerfiles != null) {
                idPerfiles = em.getReference(idPerfiles.getClass(), idPerfiles.getId());
                accessConfigUser.setIdPerfiles(idPerfiles);
            }
            List<AccessEspeciales> attachedAccessEspecialesList = new ArrayList<AccessEspeciales>();
            for (AccessEspeciales accessEspecialesListAccessEspecialesToAttach : accessConfigUser.getAccessEspecialesList()) {
                accessEspecialesListAccessEspecialesToAttach = em.getReference(accessEspecialesListAccessEspecialesToAttach.getClass(), accessEspecialesListAccessEspecialesToAttach.getId());
                attachedAccessEspecialesList.add(accessEspecialesListAccessEspecialesToAttach);
            }
            accessConfigUser.setAccessEspecialesList(attachedAccessEspecialesList);
            em.persist(accessConfigUser);
            if (idPerfiles != null) {
                idPerfiles.getAccessConfigUserList().add(accessConfigUser);
                idPerfiles = em.merge(idPerfiles);
            }
            for (AccessEspeciales accessEspecialesListAccessEspeciales : accessConfigUser.getAccessEspecialesList()) {
                AccessConfigUser oldIdConfigUsuarioOfAccessEspecialesListAccessEspeciales = accessEspecialesListAccessEspeciales.getIdConfigUsuario();
                accessEspecialesListAccessEspeciales.setIdConfigUsuario(accessConfigUser);
                accessEspecialesListAccessEspeciales = em.merge(accessEspecialesListAccessEspeciales);
                if (oldIdConfigUsuarioOfAccessEspecialesListAccessEspeciales != null) {
                    oldIdConfigUsuarioOfAccessEspecialesListAccessEspeciales.getAccessEspecialesList().remove(accessEspecialesListAccessEspeciales);
                    oldIdConfigUsuarioOfAccessEspecialesListAccessEspeciales = em.merge(oldIdConfigUsuarioOfAccessEspecialesListAccessEspeciales);
                }
            }
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }