2014-02-14 37 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

我找到了。我犯了一个非常愚蠢的错误:在更新数据之前我没有加载我的实体,所以每次我尝试更新实体时,我都创建了一个新实体。

相关问题