Comment utiliser KNPPaginatorBundle pour paginer des résultats en utilisant Doctrine Repository?

Je suis en train de travailler sur un projet Symfony2 et j'ai décidé d'utiliser KNPPaginatorBundle de construire un simple système de pagination. J'ai donc créé une entité de Produit et je tiens à ajouter le paginator à indexAction action (généré par le CRUD de commande).

//Retrieving products.
$em = $this->getDoctrine()->getManager();

//$entities = $em->getRepository('LiveDataShopBundle:Product')->findAll();

$dql   = "SELECT a FROM LiveDataShopBundle:Product a";
$entities = $em->createQuery($dql);

//Creating pagnination
$paginator  = $this->get('knp_paginator');
$pagination = $paginator->paginate(
    $entities,
    $this->get('request')->query->get('page', 1),
    20
);

Il fonctionne très bien mais je veux utiliser le Produit de référentiel au lieu de création de la requête directement dans le contrôleur. Comment puis-je le faire ?
En fait, les ajouter directement à la collecte des résultats à la pagination de l'objet est tout simplement trop lent en raison de sa charge tous les produits, puis paginer le type arraycollection.

Merci d'avance.

K4

source d'informationauteur K4timini | 2014-04-02