JPA/Hibernate @OrderBy аннотация с несколькими столбцами и ASC/DESC для каждого
Я хотел бы отсортировать поле OneToMany с аннотацией @OrderBy с несколькими столбцами и указать порядок сортировки для каждого, но я не могу найти информацию где-либо о том, как или если это невозможно. Спецификация для аннотации гласит:
orderby_list::= orderby_item [,orderby_item]*
orderby_item::= property_or_field_name [ASC | DESC]
так что я думаю, что это невозможно, но я все равно предпочитаю спросить.
Помещение следующего вызывает HibernateException при развертывании:
@OrderBy("field1 DESC, field2 DESC, field3 DESC, field4 DESC")
Генерация:
Caused by: org.hibernate.HibernateException: Unable to parse order-by fragment
Спасибо
1 ответ
Решение
Если у вас есть класс Person
с 2 полями, firstName
а также lastName
тогда с помощью запроса вы можете сделать
SELECT p FROM Person p ORDER BY p.firstName ASC, p.lastName DESC
это то, что говорит JPQL BNF.
С точки зрения того, когда у вас есть список Person
объекты, вы можете определить порядок списка как этот (тот же синтаксис)
@OneToMany
@OrderBy("firstName ASC, lastName DESC")
List<Person> myList;