Como usar o KNPPaginatorBundle para paginar resultados usando o Repositório do Doctrine?

Estou trabalhando em um projeto Symfony2 e decidi usar o KNPPaginatorBundle para criar um sistema de paginação fácil. Então, criei uma entidade Product e quero adicionar o paginador à ação indexAction (gerada pelo comando CRUD).

// 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
);

Funciona bem, mas quero usar o repositório do produto em vez de criar a consulta diretamente no controlador. Como eu posso fazer isso ? De fato, adicionar diretamente a coleção de resultados ao objeto paginar é muito lento, porque carregar todos os produtos e paginar o ArrayCollection.

Desde já, obrigado.

K4

questionAnswers(3)

yourAnswerToTheQuestion