1) y 4)
Tienes que tener en cuenta lo que sucede a un nivel inferior en la bbdd, estas intentado insertar un registro sin la clave foránea correspondiente, no es un problema de doctrine, es el comportamiento normal del rdbms, una solucion seria
One-To-Many, Unidirectional with Join Table(que en definitiva es un @ManyToMany).
Y te hago un par de comentarios/sugerencias, tienes una propiedad
Post::idpostcategory, porque razón ?, si ya tienes la asociacion con Post y a partir de ella puedes obtener el id y la propiedad
Post::idpost debería ser simplemente
Post::id.
2) mas sencillo que crear dos objetos setear un par de propiedades y hacer un persist - flush ?, que tiene de complejo ?
3) realmente no ves los beneficios ?, sobre peformance y rendimiento te dejo unas referencias
http://www.doctrine-project.org/blog...ance-revisited http://www.doctrine-project.org/blog...ng-mythbusters http://www.doctrine-project.org/blog...nd-performance
Saludos.