类..Entity \ User不是有效实体或映射超类

时间:2011-11-03 13:07:39

标签: symfony

当我尝试清除缓存时,我收到此错误(例如):

  

[Doctrine \ ORM \ Mapping \ MappingException]类   Aib \ PlatformBundle \ Entity \ User不是有效实体或映射超级   类。

这是User.php:

<?php
// src/Aib/PlatformBundle/Entity/User.php

namespace Aib\PlatformBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }

}

这是存储User.php的地方:

  

javier @ javier:〜/ programacion / aib / src / Aib / PlatformBundle / Entity $ ls   User.php UserRepository.php

这是AppKernel.php:

public function registerBundles()
{
    $bundles = array(
        ...
        new Aib\PlatformBundle\AibPlatformBundle(),
        ...
    );

sf 2.0.4

6 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:4)

我对FOS UserBundle的实现有完全相同的经验,发现我能够通过删除MyBundle \ Resources \ config \ doctrine文件夹来解决问题。

我不完全理解原因(新手),但认为这个问题是由于数据库内容建立在麻烦的方向,即来自学说实体和对一些表进行逆向工程。

答案 2 :(得分:2)

我遇到了同样的问题,结果是app / config / config.yml

它需要在NameBundle下面定义默认包,然后它工作正常

orm:
    auto_generate_proxy_classes: %kernel.debug%
    default_entity_manager: default
    entity_managers:
      default:
        mappings:
          NameBundle: ~

答案 3 :(得分:1)

在我的情况下,通过将我的服务器缓存从 eAccelerator 更改为 APC 来解决问题。 显然,eAccelerator会删除文件中的所有注释,这会破坏您的注释。

答案 4 :(得分:0)

我有同样的错误,但这是因为我没有包括Sonata应用程序:

试试这个:

在AppKernel.php中添加一行

$bundles = array(
...
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
...

答案 5 :(得分:0)

如果从映射类继承,则可以在实体的注释中添加@ORM \ SuperMappedClass。 您可以在this article中阅读大部分信息。