La pregunta es antigua, pero puede ser útil para alguien.
Si loadClassMetada llamó cada vez, entonces parece que hay un problema en su código. Pero, supongo, esos metadatos están almacenados en caché por la doctrina. En ese caso, puede cambiarlo directamente, mire el siguiente fragmento de código, debería funcionar:
<?php
class FooController extends Controller {
function fooAction() {
$em = $this->getDoctrine()->getEntityManager();
$cm = $em->getClassMetadata('FooBundle:FooEntity');
$cm->setTableName('special_table_name');
$repo = $em->getRepository('FooBundle:FooEntity');
$entities = $repo->createQueryBuilder('f')
->setMaxResults(1)
->orderBy('f.id', 'desc')
->getQuery()
->getResult();
return new Response('');
}
}