나는 내 데이터베이스 (간체 버전) 다음과 같은 연결을 가지고 :복합 키와 형태
이것은 많은-많은-으로 연결하지만 가입 테이블에 속성을 가진, 그래서 I have to use One-To-Many/Many-To-One associations입니다.
은 내가 주로 문서에서 How to Embed a Collection of Forms 튜토리얼에서 영감을 동시에 (그것을 내가 한 주문 항목에 원하는만큼의 관계를 추가하고 만들 수있는 형태를 가지고있다.
내가 양식을 게시 할 때, 교리 내가 OneToMany
관계에 cascade={"persist"}
옵션이 있기 때문에 순서에 관한 Relation
객체 (들)을 유지하려고하기 때문에 나는이 오류를 이해
Entity of type TEST\MyBundle\Entity\Relation has identity through a foreign entity TEST\MyBundle\Entity\Order, however this entity has no identity itself. You have to call EntityManager#persist() on the related entity and make sure that an identifier was generated before trying to persist 'TEST\MyBundle\Entity\Relation'. In case of Post Insert ID Generation (such as MySQL Auto-Increment or PostgreSQL SERIAL) this means you have to call EntityManager#flush() between both persist operations.
하지만 어떻게 내가이 문제를 방지 할 수 있습니다 나는 다음과 같은 오류가 발생합니다. ?
나는 cascade={"persist"}
을 제거하고 엔티티를 수동으로 유지하려고 시도했지만 동일한 오류가 발생합니다. 왜냐하면 ID를 얻기 위해 flush()
주문을해야하기 때문에 동일한 오류 메시지가 나타납니다.
도 flush()
전에 detach()
Relation
개체를 시도했지만 행운이 없습니다.
당신이 맞습니다. 나는 동시에 연락 할 수있는 명령과 관계를 추가하려고합니다. 전에 명령을 내리려고했지만'cascade = { "persist"} "의 필요성에 대한 오류를 얻었고 다시 넣으면 관계를 먼저 저장하려고합니다. 당신은 어딘가에서 실제 사례를 가지고 있습니까? 나는 하나를 찾을 수 없습니다 ... – cheesemacfly
당신은 수동으로 관계를 지속해야합니다. 모든'cascade = { "persist"}'는 당신이 그 엔티티와 관계가있는 엔티티를 지속한다면'$ em-> persist ($ relationshipObject)'를 자동으로 추가 할 것입니다. 그래서 문제를 해결하기 위해서는 해제하고 수동으로 관계 개체를 유지하고 두 번째 플러시를 수행합니다. –
''cascade = { "persist"}'를 제거한 다음 order 객체를 먼저 유지/플러시하려고하면 'TEST \ MyBundle \ Entity \ Orders # relations'관계를 통해 새로운 엔티티를 찾았습니다. TEST \ MyBundle \ Entity \ Relations ... '엔티티에 대한 지속 작업을 계단식으로 구성하지 않았습니다. 나는 관계 객체에'detach()'를 사용하려했지만 성공하지 못했습니다 ... – cheesemacfly