diff --git a/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php b/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php index 1e038d659..1f0d4653f 100644 --- a/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php +++ b/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php @@ -831,6 +831,10 @@ class ClassMetadataInfo implements ClassMetadata $serialized[] = 'lifecycleCallbacks'; } + if ($this->entityListeners) { + $serialized[] = 'entityListeners'; + } + if ($this->namedQueries) { $serialized[] = 'namedQueries'; } diff --git a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php index b8e0becc4..330b54a3f 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php @@ -714,6 +714,23 @@ class ClassMetadataTest extends \Doctrine\Tests\OrmTestCase $this->assertEquals(1, count($cm->getNamedNativeQueries())); } + /** + * @group DDC-2451 + */ + public function testSerializeEntityListeners() + { + $metadata = new ClassMetadata('Doctrine\Tests\Models\Company\CompanyContract'); + + $metadata->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService); + $metadata->addEntityListener(\Doctrine\ORM\Events::prePersist, 'CompanyContractListener', 'prePersistHandler'); + $metadata->addEntityListener(\Doctrine\ORM\Events::postPersist, 'CompanyContractListener', 'postPersistHandler'); + + $serialize = serialize($metadata); + $unserialize = unserialize($serialize); + + $this->assertEquals($metadata->entityListeners, $unserialize->entityListeners); + } + /** * @expectedException \Doctrine\ORM\Mapping\MappingException * @expectedExceptionMessage Query named "userById" in "Doctrine\Tests\Models\CMS\CmsUser" was already declared, but it must be declared only once