Ordenar por fecha ASC con datos de primavera

2 minutos de lectura

avatar de usuario
MaximeF

Intento hacer una aplicación con Spring-Data-JPA en una tabla en orden por ASC pero me da error:

Invalid derived query! No property asc found for type java.util.Calendar

Por qué ?

List<Foo> findAllOrderByDateAsc();

o

@Query("SELECT * FROM foo ORDER BY date ASC")
List<Foo> findAllOrderByDateAsc();

avatar de usuario
johnny lim

Intente agregar “Por” entre “Todos” y “Pedido” de esta manera:

List<Foo> findAllByOrderByDateAsc();

  • el truco con esta respuesta es que no es necesario escribir @Query sino simplemente nombrar el método de la manera correcta Spring-data generará la consulta ok

    – OscarG

    8 de octubre de 2014 a las 0:25

  • Para mí, esto cambia IllegalArgumentException a NullPointerException lanzada por QueryUtils.toExpressionRecursively(). No estoy usando un @Query.

    – usuario1944491

    22 de octubre de 2015 a las 14:47

  • Que extraña regla. ¡¡Gracias por el consejo!!

    – delucasvb

    21 de abril de 2016 a las 13:03

  • ¿Cómo puedo dar el nombre de la columna que se obtiene dinámicamente desde el frente?

    – PranavMS

    27 de marzo de 2018 a las 10:21

  • De todas las abstracciones brillantes que nos brinda el marco Spring, resulta que aún no están allí con la gramática.

    – nada salvaje

    16/03/2020 a las 21:00

No creo que puedas usar findAll como prefijo.

En cuanto a la consulta, select * no es válido JPQL. Debería ser

select foo from Foo foo order by foo.date desc

  • ¿Por qué no resuelve el problema? El problema es que la consulta no es válida, y le digo cuál es la consulta correcta.

    – JB Nizet

    1 de noviembre de 2013 a las 19:06


Ejemplo :

databaseDAO.findByUserNameOrderByCreatedDateDesc(username);

para enumerar a los usuarios según el nombre de usuario y ordenar por fecha de creación.

@Repository
public interface DatabaseDAO extends JpaRepository<User,Integer> {

public List<RecentlyView>  findByUserNameOrderByCreatedDateDesc(String username);


}

date es una palabra reservada en SQL. Intenta cambiar la propiedad de la tabla a foo_datepor ejemplo, y reescriba su consulta como SELECT * FROM foo ORDER BY foo_date DESC

¿Ha sido útil esta solución?