Personalmente prefiero menos magia, por lo tanto utilizo setters & getters, pero es a gusto de cada uno.
 
Con respecto al tema de las queries, porque utilizas partials ?, mismo la gente de doctrine te dice que solo lo utilices para optimizar y que tengas en cuenta que hace a tu código mas frágil y me extraña hasta que te este funcionando, el DQL para 
dameTodas debería ser algo así:    
Código DQL:
Ver original- SELECT c FROM Category c, 
 
- JOIN c.parent p 
 
- WHERE c.id > 1 AND c.activo = 1
 
- ORDER BY p.nombre DESC, c.visible DESC 
luego no estas utilizando los parametros en el DQL, esto:    
debería ser:    
Código PHP:
Ver original- $where .= " AND p.id = :id"; 
- ... 
- $query->setParameter('id', $id); 
te sugiero que revises todo el DQL prestando atención a la documentación 
http://docs.doctrine-project.org/pro...-language.html 
Saludos.