diff --git a/lib/Doctrine/ORM/Tools/Pagination/Paginator.php b/lib/Doctrine/ORM/Tools/Pagination/Paginator.php index e9e3a4d92..bb1514ea0 100644 --- a/lib/Doctrine/ORM/Tools/Pagination/Paginator.php +++ b/lib/Doctrine/ORM/Tools/Pagination/Paginator.php @@ -208,7 +208,9 @@ class Paginator implements \Countable, \IteratorAggregate { /* @var $cloneQuery Query */ $cloneQuery = clone $query; - $cloneQuery->setParameters($query->getParameters()); + + $cloneQuery->setParameters(clone $query->getParameters()); + foreach ($query->getHints() as $name => $value) { $cloneQuery->setHint($name, $value); } diff --git a/tests/Doctrine/Tests/ORM/Functional/PaginationTest.php b/tests/Doctrine/Tests/ORM/Functional/PaginationTest.php index 28e18f0de..0a2845582 100644 --- a/tests/Doctrine/Tests/ORM/Functional/PaginationTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/PaginationTest.php @@ -128,6 +128,17 @@ class PaginationTest extends \Doctrine\Tests\OrmFunctionalTestCase count($paginator); } + public function testCloneQuery() + { + $dql = "SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u"; + $query = $this->_em->createQuery($dql); + + $paginator = new Paginator($query); + $paginator->getIterator(); + + $this->assertTrue($query->getParameters()->isEmpty()); + } + public function populate() { for ($i = 0; $i < 3; $i++) {