--- /dev/null
+<?php
+
+namespace Doctrine\Tests\ORM\Functional\Ticket;
+use Doctrine\ORM\UnitOfWork;
+
+require_once __DIR__ . '/../../../TestInit.php';
+
+/**
+ * @group DDC-1383
+ */
+class DDC1383Test extends \Doctrine\Tests\OrmFunctionalTestCase
+{
+ protected function setUp()
+ {
+ parent::setUp();
+
+ try {
+ $this->_schemaTool->createSchema(array(
+ $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1383AbstractEntity'),
+ $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1383Entity'),
+ ));
+ } catch(\Exception $ignored) {}
+ }
+
+ public function testFailingCase()
+ {
+ $parent = new DDC1383Entity();
+ $child = new DDC1383Entity();
+
+ $child->setReference($parent);
+
+ $this->_em->persist($parent);
+ $this->_em->persist($child);
+
+ $id = $child->getId();
+
+ $this->_em->flush();
+ $this->_em->clear();
+
+ // Try merging the parent entity
+ $child = $this->_em->merge($child);
+ $parent = $child->getReference();
+
+ // Parent is not instance of the abstract class
+ self::assertTrue($parent instanceof DDC1383AbstractEntity,
+ "Entity class is " . get_class($parent) . ', "DDC1383AbstractEntity" was expected');
+
+ // Parent is NOT instance of entity
+ self::assertTrue($parent instanceof DDC1383Entity,
+ "Entity class is " . get_class($parent) . ', "DDC1383Entity" was expected');
+ }
+}
+
+/**
+ * @Entity
+ * @InheritanceType("JOINED")
+ * @DiscriminatorColumn(name="discr", type="integer")
+ * @DiscriminatorMap({1 = "DDC1383Entity"})
+ */
+abstract class DDC1383AbstractEntity
+{
+ /**
+ * @Id
+ * @Column(type="integer")
+ * @GeneratedValue
+ */
+ protected $id;
+
+ public function getId()
+ {
+ return $this->id;
+ }
+
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+}
+
+/**
+ * @Entity
+ */
+class DDC1383Entity extends DDC1383AbstractEntity
+{
+ /**
+ * @ManyToOne(targetEntity="DDC1383AbstractEntity")
+ */
+ protected $reference;
+
+ public function getReference()
+ {
+ return $this->reference;
+ }
+
+ public function setReference(DDC1383AbstractEntity $reference)
+ {
+ $this->reference = $reference;
+ }
+}
\ No newline at end of file