不是有效实体或映射超类

时间:2013-02-02 13:48:32

标签: entity-framework symfony doctrine

我有2个捆绑包,1个CMS捆绑包将成为父捆绑包。 我在两个捆绑包中都有重复的实体。与User一样,CMS捆绑包中的用户将其设为抽象类。 (不确定这是否是正确的选择。实际上,我想要的是如果需要扩展我的用户实体。)。

cms用户:

abstract class User implements UserInterface

捆绑用户:

use MV\CMSBundle\Entity\User as BaseUser;

/**
 * @ORM\Entity(repositoryClass="MV\NameBundle\Repository\UserRepository")
 * @DoctrineAssert\UniqueEntity(fields={"email"}, message="user.email.already.exist" )
 */
class User extends BaseUser
{
    ....
}

我收到错误Class "MV\CMSBundle\Entity\User" is not a valid entity or mapped super class.

我搜索了symfony的文档并找到了这个页面:entities-entity-mapping但他们没有添加一些内容xD

哦,不,我不想使用FOSUserBundle;)

Symfony:2.1

3 个答案:

答案 0 :(得分:23)

就我而言,我在班级定义中遗漏了* @ORM\Entity

/**
 * @ORM\Entity
 * @ORM\Table(name="listtype")
 */
class ListType
{
    ...
}

答案 1 :(得分:21)

按如下方式定义基类:

/**
 * @ORM\MappedSuperclass
 */
abstract class BaseUser
{
    // ...
}

定义真实实体:

/**
 * @ORM\Entity
 */
class User extends BaseUser
{
    // ...
}

因为你在基类上缺少@MappedSuperclass注释,所以Doctrine会抛出你提到的异常。

答案 2 :(得分:5)

我遇到了同样的问题。但为了让它发挥作用,我不得不改变界限:

* @ORM\Table
* @ORM\Entity