rspec/rules/S7186/java/rule.adoc

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]