public void create(AccessPerfiles accessPerfiles) {
        if (accessPerfiles.getAccessConfigUserList() == null) {
            accessPerfiles.setAccessConfigUserList(new ArrayList<AccessConfigUser>());
        }
        if (accessPerfiles.getAccessRolesList() == null) {
            accessPerfiles.setAccessRolesList(new ArrayList<AccessRoles>());
        }
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            List<AccessConfigUser> attachedAccessConfigUserList = new ArrayList<AccessConfigUser>();
            for (AccessConfigUser accessConfigUserListAccessConfigUserToAttach : accessPerfiles.getAccessConfigUserList()) {
                accessConfigUserListAccessConfigUserToAttach = em.getReference(accessConfigUserListAccessConfigUserToAttach.getClass(), accessConfigUserListAccessConfigUserToAttach.getId());
                attachedAccessConfigUserList.add(accessConfigUserListAccessConfigUserToAttach);
            }
            accessPerfiles.setAccessConfigUserList(attachedAccessConfigUserList);
            List<AccessRoles> attachedAccessRolesList = new ArrayList<AccessRoles>();
            for (AccessRoles accessRolesListAccessRolesToAttach : accessPerfiles.getAccessRolesList()) {
                accessRolesListAccessRolesToAttach = em.getReference(accessRolesListAccessRolesToAttach.getClass(), accessRolesListAccessRolesToAttach.getId());
                attachedAccessRolesList.add(accessRolesListAccessRolesToAttach);
            }
            accessPerfiles.setAccessRolesList(attachedAccessRolesList);
            em.persist(accessPerfiles);
            for (AccessConfigUser accessConfigUserListAccessConfigUser : accessPerfiles.getAccessConfigUserList()) {
                AccessPerfiles oldIdPerfilesOfAccessConfigUserListAccessConfigUser = accessConfigUserListAccessConfigUser.getIdPerfiles();
                accessConfigUserListAccessConfigUser.setIdPerfiles(accessPerfiles);
                accessConfigUserListAccessConfigUser = em.merge(accessConfigUserListAccessConfigUser);
                if (oldIdPerfilesOfAccessConfigUserListAccessConfigUser != null) {
                    oldIdPerfilesOfAccessConfigUserListAccessConfigUser.getAccessConfigUserList().remove(accessConfigUserListAccessConfigUser);
                    oldIdPerfilesOfAccessConfigUserListAccessConfigUser = em.merge(oldIdPerfilesOfAccessConfigUserListAccessConfigUser);
                }
            }
            for (AccessRoles accessRolesListAccessRoles : accessPerfiles.getAccessRolesList()) {
                AccessPerfiles oldIdPerfilOfAccessRolesListAccessRoles = accessRolesListAccessRoles.getIdPerfil();
                accessRolesListAccessRoles.setIdPerfil(accessPerfiles);
                accessRolesListAccessRoles = em.merge(accessRolesListAccessRoles);
                if (oldIdPerfilOfAccessRolesListAccessRoles != null) {
                    oldIdPerfilOfAccessRolesListAccessRoles.getAccessRolesList().remove(accessRolesListAccessRoles);
                    oldIdPerfilOfAccessRolesListAccessRoles = em.merge(oldIdPerfilOfAccessRolesListAccessRoles);
                }
            }
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }