【问题标题】:Class ..Entity\User is not a valid entity or mapped super classClass ..Entity\User 不是有效的实体或映射的超类
【发布时间】:2011-12-21 04:14:36
【问题描述】:

当我尝试清除缓存时出现此错误(例如):

[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

【问题讨论】:

  • 你是否在你的 app/config.yml 中设置了实体映射来自动加载?
  • 为什么不回答有问题的问题?
  • InvalidConfigurationException: Unrecognized options "auto_mapping" under "doctrine.orm" 我在 symfony 2.1-BETA 中遇到了这样的异常

标签: symfony


【解决方案1】:

在我的情况下,我的类定义中缺少 * @ORM\Entity

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

【讨论】:

    【解决方案2】:

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

    我不完全理解原因(新手),但认为问题是在麻烦的方向上构建数据库内容的结果,即来自理论实体和通过对某些表进行逆向工程。

    【讨论】:

      【解决方案3】:

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

      它需要默认捆绑包的定义如下 NameBundle,然后它工作正常

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          试试这个:

          在 AppKernel.php 中添加一行

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 2014-02-21
              • 2018-01-15
              • 1970-01-01
              • 1970-01-01
              • 2016-01-20
              • 1970-01-01
              • 1970-01-01
              • 2013-02-05
              • 2016-09-09
              相关资源
              最近更新 更多