¿Cómo usar KNPPaginatorBundle para paginar resultados usando Doctrine Repository?

Estoy trabajando en un proyecto de Symfony2 y decidí usar KNPPaginatorBundle para crear un sistema de paginación fácil. Así que creé una entidad de Producto y quiero agregar el paginador a la acción indexAction (generada por el 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 bien, pero quiero usar el repositorio del Producto en lugar de crear la consulta directamente en el controlador. Cómo puedo hacer eso ? De hecho, agregar directamente la colección de resultados al objeto paginar es demasiado lento porque carga todos los productos y luego pagina ArrayCollection.

Gracias por adelantado.

K4

Respuestas a la pregunta(3)

Su respuesta a la pregunta