Come ottenere risultati distinti in ibernazione con join e limitazione basata su righe (paging)?

Sto cercando di implementare il paging utilizzando la limitazione basata su righe (ad esempio: setFirstResult(5) e setMaxResults(10) ) su una query Hibernate Criteria che si unisce ad altre tabelle.

Comprensibilmente, i dati vengono tagliati casualmente; e la ragione di ciò è spiegata qui .

Come soluzione, la pagina suggerisce di utilizzare una “seconda selezione sql” anziché un join.

Come posso convertire la mia query di criteri esistente (che ha join usando createAlias() ) per usare invece una selezione nidificata?