Sto usando spring-data-rest con JpaRepository
per creare i rest-endpoint. Per impostazione predefinita, il paging è abilitato per tutti JpaRepository
, ciò che è una buona cosa. Ma ho un'applicazione legacy che portiamo al nostro nuovo stack che non supporta il paging. Vorrei disattivare il paging a seconda di un parametro URL per poter ancora utilizzare il cercapersone nel nuovo codice dell'applicazione.Come disattivare il paging per JpaRepository in spring-data-rest
ho provato vari approcci per esporre le risorse con e senza paginazione:
- Uso
CrudRepository
: Risultati in solo avere un unpaged endpoint e il metodoflush
manca. - Sovrascrivere il metodo
List<T> findAll()
nell'interfaccia del repository e annotarlo conRestResource
. Mi sarei aspettato che il metodo fosse esposto come metodo di ricerca, ma non lo è. - Annota
Page<T> findAll(Pageable pageable)
con@RestResource(exported=false)
e annotaList<T> findAll()
come nel punto precedente. Ho saltato che questo sostituisce il metodo predefinito. Ma questa non è comunque una soluzione valida, poiché viene esposto solo un endpoint non di paging. - Passo
size=-1
per ottenere un risultato illimitato -> dimensione di paging predefinito viene utilizzato
ho visto che la molla controller RepositoryEntityController
utilizza un RepositoryInvoker
per chiamare i metodi sulla repository. Lo Pageable
viene risolto utilizzando lo PageableHandlerMethodArgumentResolver
che restituisce sempre un paginabile (specificato in query, annotato o predefinito paginabile). L'unica soluzione che vedo per il momento è implementare un codice personalizzato PageableHandlerMethodArgumentResolver
che restituisce null, se viene passato un parametro URL personalizzato.
Conoscete altre soluzioni o qualcosa di simile pianificato per il futuro?
Grazie, Micha