How to use OrderBy with findAll in Spring Data How to use OrderBy with findAll in Spring Data spring spring

How to use OrderBy with findAll in Spring Data


public interface StudentDAO extends JpaRepository<StudentEntity, Integer> {    public List<StudentEntity> findAllByOrderByIdAsc();}

The code above should work. I'm using something similar:

public List<Pilot> findTop10ByOrderByLevelDesc();

It returns 10 rows with the highest level.

IMPORTANT:Since I've been told that it's easy to miss the key point of this answer, here's a little clarification:

findAllByOrderByIdAsc(); // don't miss "by"       ^


AFAIK, I don't think this is possible with a direct method naming query. You can however use the built in sorting mechanism, using the Sort class. The repository has a findAll(Sort) method that you can pass an instance of Sort to. For example:

import org.springframework.data.domain.Sort;@Repositorypublic class StudentServiceImpl implements StudentService {    @Autowired    private StudentDAO studentDao;    @Override    public List<Student> findAll() {        return studentDao.findAll(sortByIdAsc());    }    private Sort sortByIdAsc() {        return new Sort(Sort.Direction.ASC, "id");    }} 


Simple way:

repository.findAll(Sort.by(Sort.Direction.DESC, "colName"));

Source: https://www.baeldung.com/spring-data-sorting