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

Posted

技术标签:

【中文标题】Class ..Entity\\User 不是有效的实体或映射的超类【英文标题】: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 中遇到了这样的异常 【参考方案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阅读大部分信息。

【讨论】:

以上是关于Class ..Entity\User 不是有效的实体或映射的超类的主要内容,如果未能解决你的问题,请参考以下文章

symfony2 不是有效的实体或映射的超类(使用的超类)

org.hibernate.TypeMismatchException: Provided id of the wrong type for class cn.itcast.entity.User.

类 '...\Entity\User' 没有方法 'getGenderList'

在 Kotlin 中使用 Room 的 @ForeignKey 作为 @Entity 参数

错误生成 crud:CLass XX 不是有效实体或映射的超类

Symfony2 Class Brenne\BaseBundle\Entity\Websites 不是有效的实体或映射的超类