diff --git a/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php b/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php index 0a6ab8657..a0a71922a 100644 --- a/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php +++ b/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php @@ -243,7 +243,7 @@ abstract class AbstractHydrator } if (isset($cache[$key]['isMetaColumn'])) { - if ( ! isset($rowData[$dqlAlias][$cache[$key]['fieldName']]) || $value !== null) { + if ( ! isset($rowData[$dqlAlias][$cache[$key]['fieldName']]) && $value !== null) { $rowData[$dqlAlias][$cache[$key]['fieldName']] = $value; if ($cache[$key]['isIdentifier']) { $nonemptyComponents[$dqlAlias] = true; diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1548Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1548Test.php new file mode 100644 index 000000000..0baeca2f7 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1548Test.php @@ -0,0 +1,80 @@ +_schemaTool->createSchema(array( + $this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1548E1'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1548E2'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1548Rel'), + )); + } + + public function testIssue() + { + $rel = new DDC1548Rel(); + $this->_em->persist($rel); + $this->_em->flush(); + + $e1 = new DDC1548E1(); + $e1->rel = $rel; + $this->_em->persist($e1); + $this->_em->flush(); + $this->_em->clear(); + + $obt = $this->_em->find(__NAMESPACE__ . '\DDC1548Rel', $rel->id); + + $this->assertNull($obt->e2); + } +} + +/** + * @Entity + */ +class DDC1548E1 +{ + /** + * @Id + * @OneToOne(targetEntity="DDC1548Rel", inversedBy="e1") + */ + public $rel; +} +/** + * @Entity + */ +class DDC1548E2 +{ + /** + * @Id + * @OneToOne(targetEntity="DDC1548Rel", inversedBy="e2") + */ + public $rel; +} + +/** + * @Entity + */ +class DDC1548Rel +{ + /** + * @Id @GeneratedValue + * @Column(type="integer") + */ + public $id; + + /** + * @OneToOne(targetEntity="DDC1548E1", mappedBy="rel") + */ + public $e1; + /** + * @OneToOne(targetEntity="DDC1548E2", mappedBy="rel") + */ + public $e2; +} \ No newline at end of file