42 lines
1.6 KiB
Plaintext
42 lines
1.6 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Spring Data Repository supports paging for queries, allowing you to return results in small, manageable chunks rather than retrieving an entire large result set.
|
|
|
|
The conventional approach to paginating data in Spring is to use the `Pageable` interface to control pagination and to store the query results into a `Page` or `Slice`.
|
|
If a query declaration in a `Spring Data Repository` returns a `Page` or `Slice` without taking a `Pageable` as an input, it raises a runtime exception.
|
|
|
|
This rule raises an issue on queries in a `Repository` that return a `Page` or `Slice` without taking a `Pageable` as an input.
|
|
|
|
== How to fix it
|
|
|
|
Ensure that query methods returning a `Page` or `Slice` include a `Pageable` parameter in their method signature.
|
|
|
|
=== Code examples
|
|
|
|
==== Noncompliant code example
|
|
|
|
[source,java,diff-id=1,diff-type=noncompliant]
|
|
----
|
|
interface ItemRepository extends JpaRepository<Item, Long> {
|
|
Page<Item> findItems(); //non compliant, no Pageable parameter
|
|
}
|
|
----
|
|
|
|
==== Compliant solution
|
|
|
|
[source,java,diff-id=1,diff-type=compliant]
|
|
----
|
|
interface ItemRepository extends JpaRepository<Item, Long> {
|
|
Page<Item> findItems(Pageable pageable);
|
|
}
|
|
----
|
|
|
|
== Resources
|
|
=== Documentation
|
|
* Spring - https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html[JPA Query Methods]
|
|
* Spring - https://docs.spring.io/spring-data/jpa/reference/repositories/query-methods-details.html#repositories.paging-and-sorting[Defining Query Methods]
|
|
|
|
=== Articles & blog posts
|
|
* Spring Guides - https://reflectoring.io/spring-boot-paging/[Paging with Spring Boot]
|
|
|