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;
Другие вопросы по тегам