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