如何解决 Class xxx is not a valid entity or mapped super class 错误
Posted
技术标签:
【中文标题】如何解决 Class xxx is not a valid entity or mapped super class 错误【英文标题】:How to solve Class xxx is not a valid entity or mapped super class error 【发布时间】:2013-01-28 20:46:06 【问题描述】:我已经定义了一个这样的类设置:
<?php
use Doctrine\ORM\Mapping as ORM;
/** @ORM\Entity */
class Setting
/** @ORM\Column(type="integer")
* @ORM\GeneratedValue
* @ORM\id
*/
private $id;
/** @ORM\Column(length=255, nullable=true) */
private $displayname;
/** @ORM\Column(length=255) */
private $name;
/** @ORM\Column(type="text") */
private $value;
public function __get($name)
return $this->$name;
public function __set($key, $value)
$this->$key = $value;
public function getFullName()
return $this->name . ' suffix';
public static function getValue($settingName)
$result = '';
try
$setting = em()->createQuery('SELECT s FROM Setting s WHERE s.name = :name')
->setParameter('name', $settingName)
->getSingleResult();
$result = $setting->value;
catch (\Doctrine\ORM\NoResultException $exception)
return $result;
不幸的是,这给出了一个错误致命错误:Uncaught exception 'Doctrine\ORM\Mapping\MappingException' with message 'Class "Setting" is not a valid entity or mapped super class.' in xxxxx/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php on line 216
如何解决?
【问题讨论】:
实体在哪个命名空间和文件夹中?检查***.com/questions/7820597/… 【参考方案1】:为了解决这个问题,我不得不在最后一个参数中使用 false 调用 Setup::createAnnotationMetadataConfiguration 以避免使用 SimpleAnnotationReader,因为您需要 AnnotationReader 才能使用 ORM\ 命名空间前缀。
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
$dbParams = array(
'driver' => 'pdo_mysql',
'host' => '127.0.0.1',
'user' => 'root',
'password' => '',
'dbname' => 'db',
);
$path = __DIR__ . '/Entity';
$config = Setup::createAnnotationMetadataConfiguration(array($path), true, null, null, false);
$entityManager = EntityManager::create($dbParams, $config);
【讨论】:
【参考方案2】:找到解决方案:似乎问题在于使用 SimpleAnnotationReader。
当像这样配置 annotationDriver 时(第二个参数应该是 false)它可以工作。
$driver = $config->newDefaultAnnotationDriver(
APPLICATION_PATH . '/models', false
);
【讨论】:
你写在什么文件里?以上是关于如何解决 Class xxx is not a valid entity or mapped super class 错误的主要内容,如果未能解决你的问题,请参考以下文章
解决phpStorm使用vue提示"Attribute v-xxx is not allowed here"的问题
错误记录Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )
Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号
Host 'XXX' is not allowed to connect to this MySQL server 解决方案
TypeError: this.xxx.substring is not a function的解决办法
关于 Tomcat 6.0:"XXX" does not exist or is not a readable directory 问题的解决办法