diff --git a/lib/Doctrine/ORM/Persisters/JoinedSubclassPersister.php b/lib/Doctrine/ORM/Persisters/JoinedSubclassPersister.php index 684d30571..1fce9c701 100644 --- a/lib/Doctrine/ORM/Persisters/JoinedSubclassPersister.php +++ b/lib/Doctrine/ORM/Persisters/JoinedSubclassPersister.php @@ -181,6 +181,10 @@ class JoinedSubclassPersister extends AbstractEntityInheritancePersister $id = $this->em->getUnitOfWork()->getEntityIdentifier($entity); } + if ($this->class->isVersioned) { + $this->assignDefaultVersionValue($entity, $id); + } + // Execute inserts on subtables. // The order doesn't matter because all child tables link to the root table via FK. foreach ($subTableStmts as $tableName => $stmt) { @@ -212,10 +216,6 @@ class JoinedSubclassPersister extends AbstractEntityInheritancePersister $stmt->closeCursor(); } - if ($this->class->isVersioned) { - $this->assignDefaultVersionValue($entity, $id); - } - $this->queuedInserts = array(); return $postInsertIds; diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1787Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1787Test.php new file mode 100644 index 000000000..9e3037bed --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1787Test.php @@ -0,0 +1,63 @@ +_schemaTool->createSchema(array( + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1787Foo'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1787Bar'), + )); + } + + public function testIssue() + { + $bar = new DDC1787Bar; + $bar2 = new DDC1787Bar; + + $this->_em->persist($bar); + $this->_em->persist($bar2); + $this->_em->flush(); + + $this->assertSame(1, $bar->getVersion()); + } +} + +/** + * @Entity + * @InheritanceType("JOINED") + * @DiscriminatorColumn(name="discr", type="string") + * @DiscriminatorMap({"bar" = "DDC1787Bar"}) + */ +class DDC1787Foo +{ + /** + * @Id @Column(type="integer") @GeneratedValue(strategy="AUTO") + */ + private $id; + + /** + * @Version @Column(type="integer") + */ + private $version; + + public function getVersion() + { + return $this->version; + } +} + +/** + * @Entity + */ +class DDC1787Bar extends DDC1787Foo +{ +}