2012-09-04 97 views
2

我使用Symfony2中和學說,我收到以下錯誤:Symfony2的學說註釋[語義錯誤]

[Semantical Error] The annotation "@Doctrine\ORM\Mapping\RuleId" in property Wibiya\WebsiteBundle\Entity\Rules::$RuleId does not exist, or could not be auto-loaded.

Rules實體包含在其列/場。

/** 
    * @var integer $RuleId 
    * @ORM\RuleId 
    * @ORM\Column(name="RuleId", type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $RuleId; 

這是我試圖運行函數:

$em = $this->getDoctrine()->getEntityManager(); 
$Rules = $em->getRepository('WibiyaWebsiteBundle:Rules')->findAllOrderedByName(); 

RulesRepository類:

public function findAllOrderedByName() 
    { 
     return $this->getEntityManager() 
      ->createQuery('SELECT p FROM WibiyaWebsiteBundle:Rules p ORDER BY p.RuleName ASC') 
      ->getResult(); 
    } 

我試圖把這個線在autoload.php的底部:

require __DIR__ . "/../vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php"; 

但是,我得到了同樣的錯誤。
我使用的Symfony 2.0.16和2.1.6學說

回答

2

有教義沒有RuleId註解,只是Id [see docs]。

只需在主鍵字段使用@ORM\Id所有您定義的實體。

+0

問題已解決,謝謝你的答案,順便說一下,我如何設置主鍵以外的ID? – Meir

0

@ORM\Id只是您在主體映射中的主鍵字段的註釋,它獨立於MySql表中主鍵的列名。您可以爲主鍵字段保留任何名稱,並在映射中將其指定爲@ORM\Column(name="column_name", type="integer")