Es klingt, als ob Sie versuchen, ein Kriterium wiederzuverwenden, das für das Abrufen einer geordneten Liste erstellt wurde, um stattdessen eine Zählung zu erhalten.
Anstatt zu versuchen, dieselben Kriterien zum Abrufen von Daten und zum Zählen zu verwenden, sollten Sie wahrscheinlich am einfachsten unabhängige Kriterien erstellen.
Verwenden
Criteria orderCriteria= session.createCriteria(Libro.class)
.addOrder(Order.asc("ID"));
die Liste in der Reihenfolge abzurufen und
Criteria countCriteria= session.createCriteria(Libro.class)
.setProjection(Projections.rowCount());
verwenden, um die Zählungen zu erhalten.
Um die gleichen Kriterien für zwei Zwecke zu verwenden, müssen Sie den Status zwischen den Verwendungen ändern. Ich bin mir nicht sicher, wie ich eine Bestellung entfernen soll (oder wenn Sie wirklich müssen, um eine Zählung durchzuführen). Um eine Projektion zu entfernen, benötigen Sie nur setProjection(null)
.
Hmm ... warum nennst du 'addOrder()', wenn du es nicht willst? –
@PascalThivent guter Punkt. Manchmal erhalten Sie möglicherweise ein Criteria-Objekt mit einer integrierten Reihenfolge (z. B. von einer Factory-Methode) und möchten diese vordefinierte Reihenfolge möglicherweise entfernen. Deshalb bin ich auf diese Frage gekommen. –