【问题标题】:Doctrine class is not a valid entity or mapped super class教义类不是有效的实体或映射的超类
【发布时间】:2013-10-02 18:53:14
【问题描述】:

我是 Doctrine 和 Symfony 的新手,我很难创建一个实体。

运行以下命令时:

php app/console doctrine:generate:entities Foo/FooBundle/Entity/Company

我收到以下错误:

 `[Doctrine\ORM\Mapping\MappingException]
  Class "Foo\FooBundle\Entity\Company" is not a valid entity or mapped super class.`

实体/公司.php

   namespace Foo\FooBundle\Entity;

    use Doctrine\Common\Annotations\AnnotationReader;
    use Doctrine\ORM\Mapping as ORM;


     /**
     *@ORM\Entity
     *@ORM\Table(name="product")
     */


class Company
{
   /*
    *@ORM\Id
    *@ORM\Column(type="integer")
    *@ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;

    /*
    *@ORM\Column(type="string", length=250)
    */
    protected $name;

    /*
    *@ORM\Column(type="string", length=650)
    */
    protected $description;
}

我已经尝试调试这个问题已经有一段时间了,感谢任何关于如何解决这个问题的建议。

非常感谢!

【问题讨论】:

  • 您缺少@ORM\Entity 注释
  • 感谢您的回复。请参阅编辑。那是一个错字,实际上我的代码中有它...
  • AnnotationReader 的用途是什么?

标签: symfony doctrine-orm


【解决方案1】:

我可以看到两个错误:

  1. 没有 getter 和 setter

  2. 您的注释格式无效。到处打开时您都缺少一个 *。

    应该是

    /**
     * @ORM\WhateverHere
     */
    

    你有

    /*
     * @ORM\....
     */
    

【讨论】:

  • 1.实体不需要 getter 和 setter 才有效。 2. 是的,这实际上是正确的。您可能需要在所有 cmets 的第一个注释行中添加另一个星号。
  • 你说得对,它仍然可以被映射。但是如果他想操纵protected 属性(以任何理智的方式),他将需要它们:)
猜你喜欢
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 2013-02-05
  • 2016-09-09
  • 1970-01-01
  • 2018-06-06
  • 2018-01-15
  • 2014-01-20
相关资源
最近更新 更多