Deserialization process OneToMany-ManyToOne process always get relation data sets NULL.
The Result Entity:
@ORM\OneToMany(targetEntity="\Acme\DemoBundle\Entity\AnswerContent", mappedBy="answerResult", cascade={"persist", "remove"}, orphanRemoval=true)
@JMS\Type("ArrayCollection<Acme\DemoBundle\Entity\AnswerContent>")
@JMS\Groups({"survey_answer_fetching"})
The Answer Entity:
@ORM\ManyToOne(targetEntity="Acme\DemoBundle\Entity\AnswerResult", inversedBy="answers")
@ORM\JoinColumn(name="answer_result_id", referencedColumnName="id")
@JMS\Type("Acme\DemoBundle\Entity\AnswerResult")
Here is the json:
{"results":
[{"answers":[
{"choices":[{"fieldId":1}],"value":"","questionId":45},
{"choices":[{"fieldId":1}],"value":"","questionId":67}],
"someId":9
}],
"personId":18}
$serializer = $this->get('jms_serializer');
$data = $serializer->deserialize($json['json'], 'Acme\\DemoBundle\\Entity\\AnswerResult', 'json');
And deserialize process is assings this values...
Everything is fine, All json variables sets the correct entity properties.
$em->persist($data);
$em->flush();
the values passes to DB but relations is not... All documentations of JMSSerializationBundle. All JMS Types are defined...
But DB/Doctrine doesn't map relations...
I solved the same problem with merge() function :
$entity = $em->merge($data);
$em->persist($entity);
$em->flush();