Por almacenamiento en caché de consultas, me refiero al CachedSqlEntityProcessor . Estoy a favor de la combinada solución como en su otra pregunta . Pero CachedSqlEntityProcessor también ayudará si p_id se repite una y otra vez en el conjunto de resultados de la consulta principal publication_authors y tendrá menos preocupaciones sobre el uso de memoria adicional.
Actualización:parece que tiene otras dos preguntas resueltas, probablemente pueda ir de cualquier manera, publico el breve ejemplo / puntero como lo solicitó de todos modos en caso de que a otros les resulte útil tener
<entity name="x" query="select * from x">
<entity name="y" query="select * from y" processor="CachedSqlEntityProcessor" where="xid=x.id">
</entity>
<entity>
Este ejemplo fue tomado de wiki . Esto aún ejecutará cada consulta "seleccione * de y donde xid =id" por identificación de la consulta principal "seleccione * de x". Pero no enviará la misma consulta repetidamente.