Je voudrais trier un champ OneToMany avec l'annotation @OrderBy avec plusieurs colonnes et spécifier l'ordre de tri pour chacune, mais je n'arrive pas à trouver les informations n'importe où sur la façon de faire ou si c'est impossible. Les spécifications de l'annotation indiquent:
orderby_list::= orderby_item [,orderby_item]*
orderby_item::= property_or_field_name [ASC | DESC]
donc je suppose que ce n'est pas possible mais je préfère demander quand même.
Mettre ce qui suit lève une HibernateException lors du déploiement:
@OrderBy("field1 DESC, field2 DESC, field3 DESC, field4 DESC")
Générer:
Caused by: org.hibernate.HibernateException: Unable to parse order-by fragment
Merci
Si vous avez une classe Person
avec 2 champs, firstName
et lastName
alors avec une requête vous pouvez faire
SELECT p FROM Person p ORDER BY p.firstName ASC, p.lastName DESC
c'est ce que dit le JPQL BNF.
En termes de quand vous avez une liste d'objets Person
, vous pouvez définir l'ordre des listes comme ceci (même syntaxe)
@OneToMany
@OrderBy("firstName ASC, lastName DESC")
List<Person> myList;