2016-07-28 10 views
1

Verwendung der Spring Framework ist Page Schnittstelle ich in der Lage bin 50 Benutzer mit dem folgenden Code zu einem Zeitpunkt abzurufen:Abrufen aller Elemente aus einer Seite Instanz - Spring MVC

int page = 0; 
int pageSize = 50; 
Page<User> userPage = userRepo.findByFirstName("Bob", page, pageSize); 
List<User> userList = userPage.getContent(); 

Dies läuft eine Abfrage im Hintergrund Gib mir meine ersten 50 Benutzer in meiner Datenbank. Was ich tun möchte, ist meine userListohne Paging, so dass jeder von der zugrunde liegenden Abfrage zurückgegeben wird - ist das möglich?

Ich habe die hasNext() Methode auf meinem Page Objekt versucht, aber es läuft in einer Endlosschleife

while(userPage.hasNext()){ 
    logger.info("Next page found"); 
} 

Irgendwelche Ideen?

Antwort

1

Wenn Sie nicht möchten, Paging Sie Feder Seite ignorieren und direkt anrufen userRepo.findByFirstName("Bob");

Dadurch werden alle Benutzer in der Datenbank zurückgeben, deren vorName ist bob

Ihre Methodensignatur

sein sollte
List<User> users = userRepo.findByFirstName("Bob"); 

Hoffe, das löst Ihre Frage

+0

Ich weiß, ich kann eine neue Repomethode schreiben, um diese abzurufen - ich war nur neugierig, ob es die Seitenschnittstelle selbst zusammen mit einer '.next()' Art von Szenario –

1

Wenn Sie immer alle Benutzer und nicht sie nach Seite möchten, müssen Sie dies auf t anpassen Die Repository-Seite. Ändern Sie die Signatur von findByFirstName, um List<User> anstelle von Page<User> zurückzugeben, und entfernen Sie den Parameter Auslagerbar. Dann wird es immer alles zurückgeben. Weitere Informationen finden Sie unter how parameters are handled in the Spring Data documentation.

Wenn Sie manchmal paginieren müssen und manchmal alle Daten erhalten, dann fügen Sie einfach die List<User> Version hinzu. Der Rückgabetyp hängt davon ab, ob Sie einen Pageable Parameter übergeben oder nicht, basierend auf Java's üblicher Überladung.

Die hasNext() Methode auf Seite sagt Ihnen nur, wenn eine nächste Seite verfügbar ist (für die Darstellung der Navigation), führt sie keine weitere Abfrage aus. Sie müssten ein neues umwandelbares Objekt erstellen und mehrere Aufrufe der Page<User>-Version durchlaufen, um über die anpassbare Schnittstelle auf alle Daten zugreifen zu können. Dies ist weniger effizient als nur die eigentliche Abfrage von Daten.

+0

verwenden könnte Dies beantwortet meine Frage –