Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Limit findAll possible with Spring?

Is it possible with Springs auto implemented repositories to limit the result size of the findAll method?

I'm trying to have something like the following declared in the interface:

List<XY> findAllTopTen();

Unfortunatelly, it doesn't work (this) way...

like image 520
yogiginger Avatar asked Oct 08 '15 14:10

yogiginger


2 Answers

If you dont have a Pageable object that came from your controller and just need to get X amount of objects from DB, you can do the following:

First, your Repository class has to extend JpaRepository<T, ID> so it wil be able to query using a Pageable object.

Second, you can define a Pageable object this way:

Pageable limit = PageRequest.of(0,10);
return repository.findall(limit);

In this case, the query would return the first 10 objects.

You can find more info here (Scroll down to 4.1, Example 4) Note that the example actually extends PagingAndSortingRepository but JpaRepository contains all the methods from PagingAndSortingRepository and has additional functions aswell.

Edit: Thanks to @Zunnii for pointing out that new PageRequest() is now deprecated. I edited the snippet above to reflect that.

like image 170
dubonzi Avatar answered Oct 08 '22 04:10

dubonzi


Pass a Pageable as a parameter like following:

Page<x> findAll(Pageable pageable);
like image 30
Ali Dehghani Avatar answered Oct 08 '22 04:10

Ali Dehghani