essa critéria do JPA é horrível, a citéria do hibernate era bem mais bacana mas foi depreciada, o projeto Apache Delta Spike tem uma funcionalidade de Criteria que é super legível e bem que o pessoal da especificação poderia tornar a critéria do Delta Spike como especificação. Um recurso bem bacana são as Specifications que não sei se é do JPA mesmo ou se é coisa do SpringData mas me parece que tem o mesmo comportamento da JPA de carregar a entidade interira, e não dá pra selecionar apenas algun campos, se não me engano. Temos também os EntityGraphs mas parece que esse último não caiu muito na graça do povo