_schemaTool->createSchema(array( $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1113Engine'), $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1113Vehicle'), $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1113Car'), $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1113Bus'), )); } catch (\Exception $e) { } } public function testIssue() { $car = new DDC1113Car(); $car->engine = new DDC1113Engine(); $bus = new DDC1113Bus(); $bus->engine = new DDC1113Engine(); $this->_em->persist($car); $this->_em->flush(); $this->_em->persist($bus); $this->_em->flush(); $this->_em->remove($bus); $this->_em->remove($car); $this->_em->flush(); } } /** * @Entity * @InheritanceType("SINGLE_TABLE") * @DiscriminatorMap({"car" = "DDC1113Car", "bus" = "DDC1113Bus"}) */ class DDC1113Vehicle { /** @Id @GeneratedValue @Column(type="integer") */ public $id; /** * @ManyToOne(targetEntity="DDC1113Vehicle") */ public $parent; /** @OneToOne(targetEntity="DDC1113Engine", cascade={"persist", "remove"}) */ public $engine; } /** * @Entity */ class DDC1113Car extends DDC1113Vehicle { } /** * @Entity */ class DDC1113Bus extends DDC1113Vehicle { } /** * @Entity */ class DDC1113Engine { /** @Id @GeneratedValue @Column(type="integer") */ public $id; }