sort - Cómo utilizar OrderBy con findAll en Spring Data
spring data sort (3)
Estoy usando datos de primavera y mi DAO parece
public interface StudentDAO extends JpaRepository<StudentEntity, Integer> {
public findAllOrderByIdAsc(); // I want to use some thing like this
}
En el código anterior, la línea comentada muestra mi intención. ¿Puede Spring Data proporcionar funcionalidad incorporada para usar dicho método para encontrar todos los registros ordenados por alguna columna con ASC / DESC?
AFAIK, no creo que esto sea posible con una consulta de nombres de métodos directos. Sin embargo, puede utilizar el mecanismo de clasificación integrado, utilizando la clase Sort
. El repositorio tiene un findAll(Sort)
que puede pasar una instancia de Sort
to. Por ejemplo:
import org.springframework.data.domain.Sort;
@Repository
public 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");
}
}
Por favor, eche un vistazo aquí: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
En la sección: "Tabla 2.3. Palabras clave admitidas dentro de los nombres del método"
Creo que tiene exactamente lo que necesita y la misma consulta que usted indicó debería funcionar ...
public interface StudentDAO extends JpaRepository<StudentEntity, Integer> {
public List<StudentEntity> findAllByOrderByIdAsc();
}
El código anterior debería funcionar. Estoy usando algo similar:
public List<Pilot> findTop10ByOrderByLevelDesc();
Devuelve 10 filas con el nivel más alto.
IMPORTANTE: dado que me han dicho que es fácil pasar por alto el punto clave de esta respuesta, aquí hay una pequeña aclaración:
findAllByOrderByIdAsc(); // don''t miss "by"
^