2014-02-14 51 views
0

我有這個問題用symfony 2:錯誤堅持一個Symfony2的實體:一個新的實體被發現

「一個新的實體通過中沒有配置的關係「的Acme \ AcmeBundle \實體\ MainEntity#人發現爲實體級聯持久化操作:JOHN DOE CORP。要解決此問題:顯式調用此未知實體上的EntityManager#persist()或配置級聯將此關聯保存在映射中,例如@ManyToOne(..,cascade = {「persist 「})。」

MainEntity是一個普通的實體,具有與person實體的ManyToOne關係的「person」字段。 People實體是一個只讀實體,但我不知道爲什麼會創建一個新Person。

當我通過表單更新MainEntity時發生這種情況。形式的定義是:

$builder 
     ->add('code') 
     ->add('type') 
     ->add('person', new PeopleType()) 
     ->add('Save', 'submit'); 

而且PeopleType是:

$builder 
      ->add('name', 'text', array('read_only' => true)) 
      ->add('idNumber', 'text', array('read_only' => true)) 
      ->add('address', new AddressType()); 

正如你所看到的,這是不可能改變的人場,所以我不知道這裏發生了什麼?請提供任何線索?

+1

你在你的實體中有一個關係,你需要在其上添加'cascade = {「persist」} ......你能顯示你的實體的代碼嗎? –

+0

我無法添加cascade = {「persist」},因爲People表必須是隻讀表,因此無法創建新人。無論如何,AFAIK我沒有創建任何新的人... – mHouses

回答

0

我找到了。我犯了一個非常愚蠢的錯誤:在更新數據之前我沒有加載我的實體,所以每次我嘗試更新實體時,我都創建了一個新實體。

相關問題