Doctrine no permite que ResultSetMappingBuilder funcione

Estoy usando Symfony 2 con doctrina. He configurado un repositorio personalizado con una función de búsqueda personalizada. Como se une a una subconsulta, estoy bastante seguro de lo que he leído que necesitaré usar ResultSetMappingBuilder para recuperar los resultados de la consulta. Pero sigo recibiendo el siguiente error:

The column 'id' conflicts with another column in the mapper. 

Mi código es:

    $sql ="SELECT c.id as cid, c.country, c.rank, c.continent, q.*
        FROM country c
        INNER JOIN (
            SELECT d.* , MAX( d.rating ) AS maxrating
            FROM ducks d
            GROUP BY d.country_id
        )q ON ( q.country_id = c.id )";

    $rsm = new \Doctrine\ORM\Query\ResultSetMappingBuilder($this->getEntityManager());
    $rsm->addRootEntityFromClassMetadata('Wfuk\DuckBundle\Entity\Country', 'c', array('id' => 'cid'));
    $rsm->addJoinedEntityFromClassMetadata('Wfuk\DuckBundle\Entity\Ducks', 'ducks', 'c', 'country_id');

    $query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
    return $query->getResult();

La consulta SQL se ejecuta por sí sola sin ningún problema y devuelve los resultados que esperaba.

UPDATE, he solucionado el problema de id al reasignar el campo de id en addRootEntityFromClassMetadata, pero aún tengo un problema pendiente con el joinEntity revisado:

    $rsm->addJoinedEntityFromClassMetadata('Wfuk\DuckBundle\Entity\Ducks', 'ducks', 'c', 'country_id');

Obtuve el siguiente error

Notice: Undefined index: country_id in E:\Documents\wfuk\Work\duck travels\wamp\vendor\doctrine\lib\Doctrine\ORM\Internal\Hydration\ObjectHydrator.php line 85 

Estoy bastante seguro de que esto se debe al último valor de la llamada, country_id, pero no estoy 100% seguro de qué es esto. La explicación aquí:http: //readthedocs.org/docs/doctrine-orm/en/latest/reference/native-sql.htm no es muy claro y no entiendo completamente la descripción del docblock de la clase.

El error que da es:

The column 'id' conflicts with another column in the mapper. 

Sin embargo, he cambiado el nombre del campo de id para uno de los resultados, por lo que el conjunto de resultados solo tiene una columna llamada 'id'.

El stacktrace del error muestra que se está lanzando aquí:

at ResultSetMappingBuilder ->addAllClassFields ('Wfuk\DuckBundle\Entity\Ducks', 'q', array())
in E:\Documents\wfuk\Work\duck travels\wamp\vendor\doctrine\lib\Doctrine\ORM\Query\ResultSetMappingBuilder.php at line 71

Sospecho que es algo obvio, pero no hay mucha documentación sobre esta función que pueda encontrar en ningún lado ...

RESUELTO:

No puedo agregar esto como respuesta por otras 5 horas, así que para evitar que alguien pierda el tiempo respondiendo esto, la respuesta es:

Para cualquiera que tenga el mismo problema, el problema fue con el cuarto parámetro enviado en esta línea:

$rsm->addJoinedEntityFromClassMetadata('Wfuk\DuckBundle\Entity\Ducks', 'ducks', 'c', 'ducks');

Lo que debería haber mantenido el campo dentro de la clase Country que estaba usando para almacenar la colección de patos dentro de ella.

Respuestas a la pregunta(4)

Su respuesta a la pregunta