Ich verwende Spring-Daten-Rest mit JpaRepository
, um die Ruhe-Endpunkte zu erstellen. Standardmäßig ist Paging für alle JpaRepository
aktiviert, was eine gute Sache ist. Aber ich habe eine Legacy-Anwendung, die wir auf unseren neuen Stack portieren, der kein Paging unterstützt. Ich möchte das Paging abhängig von einem URL-Parameter deaktivieren, um immer noch Paging im neuen Anwendungscode verwenden zu können.So deaktivieren Sie das Paging für JpaRepository im Frühjahr-Datenrest
Ich habe versucht, verschiedene Ansätze, die Ressourcen mit und ohne Paging zu belichten:
- Verwendung
CrudRepository
: Ergebnisse in nur einem unpaged Endpunkt mit und die Methodeflush
fehlt. - Überschreiben Sie die
List<T> findAll()
Methode in meiner Repository-Schnittstelle und kommentiert es mitRestResource
. Ich hätte erwartet, dass die Methode als Suchmethode zur Verfügung gestellt wird, ist es aber nicht. - Kommentieren Sie
Page<T> findAll(Pageable pageable)
mit@RestResource(exported=false)
und kommentieren SieList<T> findAll()
wie in der Kugel vor. Ich habe gehüpft, dass dies die Standardmethode ersetzt. Dies ist jedoch keine gültige Lösung, da nur ein nicht ausgelagerter Endpunkt verfügbar ist. - Pass
size=-1
ein unbegrenztes Ergebnis zu erhalten -> Standard-Paging-Größe verwendet wird
ich, dass der Feder-Controller RepositoryEntityController
ein RepositoryInvoker
verwendet gesehen habe, die Methoden auf dem Repository zu nennen. Die Pageable
wird aufgelöst, indem die PageableHandlerMethodArgumentResolver
verwendet wird, die immer eine Auslagerungsdatei zurückgibt (angegeben in Abfrage, mit Anmerkungen versehen oder standardmäßig auslagerbar). Die einzige Lösung, die ich im Moment sehe, ist die Implementierung einer benutzerdefinierten PageableHandlerMethodArgumentResolver
, die Null zurückgibt, wenn ein benutzerdefinierter URL-Parameter übergeben wird.
Kennen Sie weitere Lösungen oder ist für die Zukunft etwas Ähnliches geplant?
Danke, Micha