Tal cual esta a mi me funciona correctamente tanto para editar como crear usuarios nuevos, el único problema que veo tal cual lo tienes es que si no seteas un perfil te va a lanzar una excepcion porque estas creando en el constructor un nuevo perfil sin nombre.
Lo teste con el siguiente código:
Código PHP:
Ver original$usuario = new Usuario;
//$usuario = $em->find('Usuario', '5079f24a36791');
$usuario->setCorreo('correo');
$usuario->setNombre('nombre');
$usuario->setClave('clave');
$perfil = $em->find('Perfil', 1);
if(null === $perfil){
$perfil = new Perfil;
$perfil->setPerfil('guest'.rand()); }
$usuario->setPerfil($perfil);
$em->persist($usuario);