Cache e maxResults na JPA 1.0

Boa tarde galera…
Estou quebrando a cabeça aqui sobre o seguinte problema.
O projeto em questão deve obrigatoriamente trabalhar somente com a especificação JPA 1.0, não posso usar nada que não seja de javax.persistence…
Um exemplo de um metodo do dao

public Venda carregarVendaPorCategoria(int maxResult, String fornecedorAlias) {
		String jpql = "Select venda from Venda venda "
				+ " join fetch venda.fornecedor fornecedor "
				+ " join fetch venda.produtos produtos "
				+ " join fetch produtos.categoria categoria "
				+ " where fornecedor.alias = :alias order by venda.id desc";
		Query query = this.em.createQuery(jpql);
		query.setParameter("alias", fornecedorAlias);
		query.setMaxResults(maxResult);

		return query.getSingleResult();
	}

Quais são os meus problemas:
1 - Quando uso join fetch o MaxResults é feito em memória, aí já inviabiliza a query;
2 - Essa query será executada constantemente dentro de um intervalo de tempo(Uma espécie de dashboard), e dados que não mudam frequentemente como categoria do produto e fornecedor estão sendo buscados a cada execução(Uma ótima oportunidade para jogar em cache), pois bem, eu sei fazer isso com jpa 2.0 e/ou com o hibernate.
Alguém sabe se é possível implementar algo apenas com a especificação da JPA 1.0 ?? Consigo usar essa especificação com o ehcache ??

Muito obrigado

Não usei JPA 1.0, mas o CriteriaBuilder não faria isso que você quer?

Ola evefuji, então cara, nem tenho essa classe no meu classpath… ela deve fazer parte da jpa 2.0 eu acho…