 <p>Array hydration is not the best way for achieve this kind of situations. The same scenario here:</p> <pre><code>Person - id_person - name - child //self refering </code></pre> <p>Array hydration only select the first level. I resolving it taking one of these two options:</p> <ol> <li><p>Use <code>left join</code> association</p> <pre><code>$query = $entityManager-&gt;createQueryBuilder() -&gt;select('p1, p2, p3, p4, p5, p6') -&gt;from('Entity\Person', 'p1') -&gt;leftJoin('p1.child', 'p2') -&gt;leftJoin('p2.child', 'p3') -&gt;leftJoin('p3.child', 'p4') -&gt;leftJoin('p4.child', 'p5') -&gt;leftJoin('p5.child', 'p6') -&gt;createQuery(); </code></pre> <p>and then, use array hydration.</p></li> <li><p>Create your own recursive function in order to add manually each element in an array.</p></li> </ol>