symfony2 不是有效的实体或映射的超类
Posted
技术标签:
【中文标题】symfony2 不是有效的实体或映射的超类【英文标题】:symfony2 is not a valid entity or mapped super class 【发布时间】:2013-02-05 19:43:36 【问题描述】:我有一个 symfony2 应用程序,在我的本地电脑上用 ubuntu 运行良好,但在 CentOS 和 Cpanel 的服务器上不工作,我收到此错误:
类“Propa\PageBundle\Entity\Page”不是有效实体或映射 超级类。
CRITICAL - Doctrine\ORM\Mapping\MappingException: 类 “Propa\PageBundle\Entity\Page”不是有效的实体或映射的超 班级。 (未捕获的异常)在 /home/estudi83/domains/serverprova.com.es/propa/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php 第 216 行
我证明:
$page=$em->getRepository('PropaPageBundle:Page')->findOneBy(array('codi'=>'0001'));
并得到这个错误:Unknown Entity namespace alias 'PropaPageBundle'.
我证明:
$page=$em->getRepository('Propa\PageBundle\Entity\Page')->findOneBy(array('codi'=>'0001'));
并获得相同的错误:Class "Propa\PageBundle\Entity\Page" is not a valid entity or mapped super class.
这是实体:
<?php
namespace Propa\PageBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Propa\PageBundle\Util;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(repositoryClass="Propa\PageBundle\Repository\PageRepository")
* @Gedmo\TranslationEntity(class="Propa\PageBundle\Entity\Translation\PageTranslation")
* @ORM\HasLifecycleCallbacks
* @Vich\Uploadable
*/
class Page
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
protected $id;
我已经证明了:
auto_mapping: true
和
auto_mapping: false
mappings:
PageBundle: ~
但总是得到同样的错误。
我能做什么?
更新:使用 symfony2 注释解决了 eAccelerator 中的问题,我卸载了 eAccelerator 并安装了 APC 并且工作正常!!
【问题讨论】:
【参考方案1】:最后,可能是缓存优化器问题。如果您使用的是 eAccelerator,那么您将遇到问题,可能是 Doctrine。原因是 eAccelerator 从代码中删除了注释!你可以试试 APC,它在学说上表现很好。
阅读apc vs eaccelerator vs xcache
看看
http://you.site.name/config.php
它向您展示了使您的应用程序工作应该存在的要求。
与
请公开您的页面实体类。
这个错误可能有很多原因,您的问题已经在 SO "Class XXX is not a valid entity or mapped super class" after moving the class in the filesystem 上提出过
https://github.com/symfony/symfony/issues/4554
$page=$em->getRepository('PageBundle:Page')->findOneBy(array('codi'=>'0001'));
改成
$page=$em->getRepository('PropaPageBundle:Page')->findOneBy(array('codi'=>'0001'));
或
$page=$em->getRepository('Propa\PageBundle\Entity\Page')->findOneBy(array('codi'=>'0001'));
看看它是否有效。
【讨论】:
你能显示错误是在哪里引发的吗?我的意思是哪条线,告诉我们这条线 您可以在这里查看网页:propa.serverprova.com.es/app_dev.php/es/empresa 解决了 eAccelerator 的问题,我卸载了 eAccelerator 并安装了 APC 并且工作正常!!以上是关于symfony2 不是有效的实体或映射的超类的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 Class Brenne\BaseBundle\Entity\Websites 不是有效的实体或映射的超类
问:Symfony2 - Doctrine - Class xxx 不是有效的实体或映射的超类
Class ..Entity\User 不是有效的实体或映射的超类