空继承的实体Symfony2

时间:2014-03-11 20:07:29

标签: php symfony doctrine-orm

我举例说明这个架构

abstract class Class1

    attr1
    attr2

class Class2 extends Class1

    /**
    * @ORM\OneToMany("Class3")
    */
    attr3Array

class Class3

    /**
    * @ORM\ManyToOne(targetEntity="Class2")
    */
    attr3

这只是一个伪代码来呈现我的问题。 当我尝试生成我的数据库时,我有这个错误

[Doctrine\ORM\Mapping\MappingException]
Entity 'Class2' has to be part of the discriminator map of 'Class1' to be properly mapped   
  in the inheritance hierarchy. Alternatively you can make 'Class2' an abstract class to avoid this exception from occurring.  

但我想创建Class2的实例,我不想要一个抽象的Class2 还有其他方法来模拟我的实体吗?

1 个答案:

答案 0 :(得分:2)

尝试将父类定义为映射的超类。如果有@ORM\Entity注释,则您需要将其删除。

/**
 * @ORM\MappedSuperclass
 */
abstract class Class1
{
}

如果Doctrine不喜欢MappedSuperclasses是抽象的,你可能还必须使这个类不抽象。

有关继承映射的更多信息可以是found in the docs。您也可以在那里找到更合适的解决方案。