Ho una combinazione di criteri di ricerca implementati utilizzando criteri di ibernazione. E ho aggiunto un impaginazione come questo:conteggio (*) nei criteri di ibernazione?
criteria.setFirstResult(offset).setMaxResults(pageSize).setFetchSize(pageSize).list();
questo non è sufficiente per un'impaginazione, così ho contare la dimensione totale risultato.
totalResult = (Integer)criteria.setProjection(Projections.rowCount()).uniqueResult();
Il problema è che la prima volta che invio il modulo di ricerca, ho ottenuto TotalResult corretto. Quando faccio clic sulla pagina successiva e l'offset cambia, ho ottenuto una NullPointExcetion alla seconda istruzione. Non so perché. E attraverso il debug, posso vedere quando si verifica questa eccezione, la prima dichiarazione restituisce correttamente i risultati impaginati.
Quindi voglio chiedere, la prima affermazione è in conflitto con la seconda? (poiché la prima istruzione imposta il valore fetch su 10 e mi chiedo se la funzione count (*) funzionerà correttamente. sono task diversi con gli stessi criteri, Come posso clonare o copiare un criterio che ha già numerose restrizioni?)
Grazie, in realtà la mia soluzione è esattamente lo stesso con le vostre risposte. Funziona ! – Sawyer