Details
Description
If you got two Entities A and B where A is a sample Entity with a 1:n relation to the Entity B
and B has a composite PK with the FK (A id) and a custom field like this:
EntityA:
type: entity
table: entity_a
repositoryClass: EntityARepository
id:
id:
type: integer
generator:
strategy: AUTO
fields:
handle:
type: string
length: 32
unique: true
oneToMany:
entites_b:
targetEntity: EntityB
mappedBy: entity_a
cascade: [persist]
EntityB:
type: entity
table: entity_b
repositoryClass: EntityBRepository
id:
description:
type: string
length: 255
notnull: true
generator:
strategy: NONE
entitiy_a_id:
type: integer
length: 11
notnull: true
generator:
strategy: NONE
fields:
value:
type: string
length: 255
manyToOne:
entitiy_a:
targetEntity: EntitiyA
inversedBy: entities_b
Class EntityA { private $id; private $handle; private $b_coll; public function addB(EntityB $ent) { $this->b_coll->add($ent); $b->setA($this); } }
Class EntityB { private $description; private $entity_a_id; private $value; private $entity_a; public function setA(EntityA $ent) { $this->entity_a = $ent; } }
If you try to persist an object of A holding one or more references to objects of B, the objects get correctly persistet. This means, that every inserted record of B has a correctly filled field "entity_a_id". The objects of B also have a correct reference to A holding now the new A record with its autoinc id.
But the object property "entity_a_id" stays empty. This leads to a collection of unusable EntityB objects (in memory), since on another persist of EntityA the values of entity_a_id are still not set correctly but the state is managed which leads to an "update B ... where entity_a_id=0"
We've tried to set the entity_a_id with an event handler on postPersist. On a persist of EntityA the collection entities wanted to update their entity_a_ids from 0 to the correct one.
Implemented