diff --git a/lib/Doctrine/ORM/Repository/DefaultRepositoryFactory.php b/lib/Doctrine/ORM/Repository/DefaultRepositoryFactory.php index 2774dea68..d756ed4f9 100644 --- a/lib/Doctrine/ORM/Repository/DefaultRepositoryFactory.php +++ b/lib/Doctrine/ORM/Repository/DefaultRepositoryFactory.php @@ -43,13 +43,15 @@ class DefaultRepositoryFactory implements RepositoryFactory { $entityName = ltrim($entityName, '\\'); - if (isset($this->repositoryList[$entityName])) { - return $this->repositoryList[$entityName]; + $class = $entityManager->getClassMetadata($entityName)->getName(); + + if (isset($this->repositoryList[$class])) { + return $this->repositoryList[$class]; } $repository = $this->createRepository($entityManager, $entityName); - $this->repositoryList[$entityName] = $repository; + $this->repositoryList[$class] = $repository; return $repository; } @@ -74,4 +76,4 @@ class DefaultRepositoryFactory implements RepositoryFactory return new $repositoryClassName($entityManager, $metadata); } -} \ No newline at end of file +} diff --git a/tests/Doctrine/Tests/ORM/Functional/EntityRepositoryTest.php b/tests/Doctrine/Tests/ORM/Functional/EntityRepositoryTest.php index 12b941efc..193497a1b 100644 --- a/tests/Doctrine/Tests/ORM/Functional/EntityRepositoryTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/EntityRepositoryTest.php @@ -611,6 +611,23 @@ class EntityRepositoryTest extends \Doctrine\Tests\OrmFunctionalTestCase $this->_em->getConfiguration()->setDefaultRepositoryClassName("Doctrine\Tests\Models\DDC753\DDC753InvalidRepository"); } + public function testSingleRepositoryInstanceForAnEntity() + { + $config = $this->_em->getConfiguration(); + $config->addEntityNamespace('Aliased', 'Doctrine\Tests\Models\CMS'); + $config->addEntityNamespace('AliasedAgain', 'Doctrine\Tests\Models\CMS'); + + $this->assertSame( + $this->_em->getRepository('Doctrine\Tests\Models\CMS\CmsUser'), + $this->_em->getRepository('Aliased:CmsUser') + ); + + $this->assertSame( + $this->_em->getRepository('Aliased:CmsUser'), + $this->_em->getRepository('AliasedAgain:CmsUser') + ); + } + /** * @group DDC-1376 *