zend2 + doctrine 2未捕获的异常'Doctrine \ Common \ Annotations \ AnnotationException'$ jobId不存在

时间:2013-09-21 17:16:21

标签: zend-framework doctrine-orm

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

  

致命错误:未捕获的异常   带有消息的'Doctrine \ Common \ Annotations \ AnnotationException'   '[语义错误]注释“@Doctrine \ ORM \ Mapping \ jobId”in   属性Workers \ Entity \ Jobsought :: $ 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无法映射它的任何想法?该表存在于我的数据库中。

1 个答案:

答案 0 :(得分:0)

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

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

其次,我认为你试图用@property int $jobId"$jobId"是你的PK?当你说@ORM\GeneratedValue(strategy="AUTO")时,你已经这样做了,告诉学说把jobid映射成你的PK。另外,我在某处读到将name="job_id"添加到@Column注释中是一种很好的做法,但请不要引用我的话。猜猜它并不重要。

希望这有帮助!

编辑 -

我的不好,也错过了你需要删除@ORM\jobId,因为它不是一个有效的学说注释(jobId)。只需将其指定为@ORM\Id即可。