Hola Luigi, en respuesta al correo que me enviaste te puedo comentar:
Como estas realizando un "INSERT" personalizado con datos que ya tienes almacenados (las llaves foráneas) para agregarlas al registro que estas agregando no basta con tener los id ya que aunque esos sean las llaves forarneas lo que doctrine espera que le asocies son las entidades que conrresponden a esos id.
En un ejemplo seria mas o menos asi:
$dato_# corresponden a los valores recibidos desde tu controlador
$v_fk_# corresponden a las entidades que asociaras al nuevo registro
$v_fk_1 = $this->getEntityManager()->getRepository('modeloBundle:ScdEntidad1')->find($dato_1); //llave foranea 1
$v_fk_2 = $this->getEntityManager()->getRepository('modeloBundle:ScdEntidad2')->find($dato_2); //llave foranea 2
//... después de haber comprobado la existencia de las llaves foráneas procedes a asignarle los valores a tu nuevo registro
$entity = new ScdEntidad();
$entity->setCampo($datos_lo_que_sea); //Cualquier otro dato que registras
$entity->setFecha(new \DateTime('now')); //Cualquier otro dato que registras
$entity->setProducto($v_fk_1); //asociamos la llave foránea 1
$entity->setcategoria($v_fk_2); //asociamos la llave foránea 2
$em->persist($entity);
$em->flush();