Sembra che tu stia cercando di riutilizzare un criterio creato per ottenere un elenco ordinato.
Piuttosto che cercare di utilizzare gli stessi criteri per il recupero dei dati e per il conteggio, è probabilmente preferibile creare semplicemente criteri indipendenti.
Usa
Criteria orderCriteria= session.createCriteria(Libro.class)
.addOrder(Order.asc("ID"));
per recuperare l'elenco in ordine, e utilizzare
Criteria countCriteria= session.createCriteria(Libro.class)
.setProjection(Projections.rowCount());
per ottenere i conteggi.
Per utilizzare lo stesso criterio per due scopi, è necessario modificare lo stato tra gli utilizzi. Non sono sicuro di come rimuovere un ordine (o se è davvero necessario per fare un conteggio). Per rimuovere una proiezione è sufficiente setProjection(null)
.
fonte
2010-03-05 05:14:50
Hmm ... perché si chiama 'addOrder()' se non lo si desidera? –
@PascalThivent buon punto. A volte è possibile che venga restituito un oggetto Criteria con un ordine predefinito (ad esempio da un metodo factory) e si desideri rimuovere tale ordinamento predefinito. Questo è il motivo per cui sono venuto in questa domanda. –