JPA/Hibernate @OrderBy 多列注解,每列 ASC/DESC

JPA/Hibernate @OrderBy annotation with multiple columns and ASC/DESC for each

我想使用带有多列的@OrderBy 批注对 OneToMany 字段进行排序,并为每个列指定排序顺序,但我似乎无法在任何地方找到有关如何操作或是否不可能的信息。 注释的规范说:

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

谢谢

如果您有一个 class Person 包含 2 个字段,firstNamelastName 那么您可以通过查询执行

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;