Bonjour.
Si tu regardes bien l'exemple de la documentation, tu verras qu'il y a une petite différence :
Comme tu peux le voir, le retour de la méthode getQuery est stocké dans une variable et c'est sur cette variable qu'est utilisé la méthode execute et non sur la variable initiale ($qb).
Au passage, si tu regardes la signature du retour dans la documentation, c'est bien un tableau qui est retourné et non une entité, ce qui en même temps est normal si tu récupères plusieurs enregistrements.
Par contre, fais attention, dans ton code de la méthode findByReference tu as un ; en trop à la fin.