web-dev-qa-db-fra.com

Ordre DAO de pièce par variable ASC ou DESC

J'essaie de faire un @Query fonction dans mon @Dao interface qui a un paramètre booléen, isAsc pour déterminer l'ordre:

@Query("SELECT * FROM Persons ORDER BY first_name (:isAsc ? ASC : DESC)")
List<Person> getPersonsAlphabetically(boolean isAsc);

Apparemment, ce n'est pas autorisé. Y a-t-il un travail ici?

MODIFIER:

Il semblait étrange d'utiliser deux requêtes (ci-dessous) car la seule différence est ASC et DESC:

@Query("SELECT * FROM Persons ORDER BY last_name ASC")
List<Person> getPersonsSortByAscLastName();

@Query("SELECT * FROM Persons ORDER BY last_name DESC")
List<Person> getPersonsSortByDescLastName();
9
aLL

Utilisation CASE Expression for SQLite pour y parvenir dans Room DAO,

@Query("SELECT * FROM Persons ORDER BY CASE WHEN :isAsc = 1 THEN first_name END ASC, CASE WHEN :isAsc = 0 THEN first_name END DESC")
List<Person> getPersonsAlphabetically(boolean isAsc);
7
Chandan Sharma

Créez deux requêtes, une avec ASC et une avec DESC.

@Query("SELECT * FROM Persons ORDER BY last_name ASC")
List<Person> getPersonsSortByAscLastName();

@Query("SELECT * FROM Persons ORDER BY last_name DESC")
List<Person> getPersonsSortByDescLastName();
2
just