0

我是 zend 2 和 Doctrine 2 的新手。我尝试创建一个实体类,但收到以下消息:

致命错误:未捕获的异常 'Doctrine\Common\Annotations\AnnotationException' 带有消息 '[Semantical Error] 属性 Workers\Entity\Jobsought::$jobId 中的注释“@Doctrine\ORM\Mapping\jobId”不存在,或者可能不会自动加载

下面是实体类

namespace Workers\Entity;

use Doctrine\ORM\Mapping as ORM;
use Zend\InputFilter\InputFilter;
use Zend\InputFilter\Factory as InputFactory;
use Zend\InputFilter\InputFilterAwareInterface;
use Zend\InputFilter\InputFilterInterface; 

/**
 * 
 *
 * @ORM\Entity
 * @ORM\Table(name="worker_main_jobsort")
 * @property int $jobId
 */
class Jobsought implements InputFilterAwareInterface 
{
    protected $inputFilter;

    /**
     * @ORM\jobId
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $jobId;


    /**
     * Magic getter to expose protected properties.
     *
     * @param string $property
     * @return mixed
     */
    public function __get($property) 
    {
        return $this->$property;
    }

    /**
     * Magic setter to save protected properties.
     *
     * @param string $property
     * @param mixed $value
     */
    public function __set($property, $value) 
    {
        $this->$property = $value;
    }
}

任何想法为什么 ORM 不能映射它?该表存在于我的数据库中。

4

1 回答 1

0

也刚开始使用这两者的结合 - 但我想我知道你的问题是什么。

首先,您不能尝试在不使用 @ignore 指令的情况下指定任何“奇怪”(根据教义奇怪)注释。

其次,我想你想说的@property int $jobId"$jobId"你的PK?好吧,当您说@ORM\GeneratedValue(strategy="AUTO")教条将jobid映射为您的PK时,您已经这样做了。另外,我在某处读到,添加name="job_id"到您的@Column注释中是一种很好的做法,但不要引用我的话。估计真的无所谓。

希望这可以帮助!

编辑 -

我的错,也错过了您需要删除@ORM\jobId的内容,因为它不是有效的教义注释(即 jobId)。只需将其指定为就@ORM\Id可以了。

于 2013-09-22T20:43:18.570 回答