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"));