JPA - Muitos registros

Eea galera…
Enton estou iniciando no jpa e estou testanto uma tabela que por dia gera aproximadamente 250 mil registros… e guarda os 3 ultimos meses… portanto, milhões de registros.
Quando utilizo JPA + Toplink, consigo uns 20 mil registros no max… aí estoura a parada.
Disseram que se mudar pra Hibernate, esse numero aumenta para uns 60 min (não testei)
Disseram para paginar… porém tentei fazer o seguinte para testar:

Query q = em.createNamedQuery("MsHistoricoComandoHist.findByHcmDataExec");
q.setFirstResult(1000000);
q.setMaxResults(1);
q.getResultList();

E pelo que eu percebi ele vai na sequencia do 1 ateh o 1 milhao… ou seja, nem me traz esse único registro que eu pedi.

Tentei uns clean, flush… mas num entendi exatamente onde eu uso isso no exemplo acima… jah q ele vai gerar exceção no momento de gerar a lista
ou seja… ele trava nessa linha (não colokei para armazenar numa lista para ter certeza que o problema era só na chamada mesmo desse método)

E sim, preciso pegar esse monte de registro… não para mostrar na tela, e sim para atualizar um campo novo no banco… nem que fosse "aos poucos"
Estou utilizando oracle e talvez para isso fosse melhor utilizar Pl Sql… mas como estou aprendendo JPA… gostaria de saber se dá pra fazer isso.

OBS:

o código abaixo funfa.

q.setFirstResult(0);
q.setMaxResults(100);
q.getResultList();

[]´s
Alex

Veja se esse topico te ajuda:
http://www.guj.com.br/posts/list/21462.java

não tinha visto esse tópico ainda, Pedrosa… Valew! Mas continuo na mesma enton… pq o setFirst lah pra mim, num roloh do jeito q eu esperava… e a real solução q eu ví no post, é via SQL mesmo para paginar…

Bom… só resta o sql mesmo… queria saber isso mais para o aprendizado mesmo…

alguém sabe outra maneira via jpa ?? imagino eu q um (session.createCriteria(TipoPerfil.class)).setFirstResult(1000000); dah na mesma do meu exemplinho…

[]´s
Alex