JPA/Hibernate @OrderBy注释包含多个列和每个ASC/DESC

San*_*ndy 6 jpa hibernate-annotations jpa-annotations

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

orderby_list::= orderby_item [,orderby_item]*
orderby_item::= property_or_field_name [ASC | DESC]
Run Code Online (Sandbox Code Playgroud)

所以我的猜测是不可能的,但无论如何我更愿意问.

在部署时抛出以下内容会引发HibernateException:

@OrderBy("field1 DESC, field2 DESC, field3 DESC, field4 DESC")
Run Code Online (Sandbox Code Playgroud)

生成:

Caused by: org.hibernate.HibernateException: Unable to parse order-by fragment
Run Code Online (Sandbox Code Playgroud)

谢谢

Nei*_*ton 13

如果你有一个类Person有2场,firstNamelastName随后与查询,你可以做

SELECT p FROM Person p ORDER BY p.firstName ASC, p.lastName DESC
Run Code Online (Sandbox Code Playgroud)

这是JPQL BNF所说的.

就你何时拥有一个Person对象列表而言,你可以像这样定义List排序(相同的语法)

@OneToMany
@OrderBy("firstName ASC, lastName DESC")
List<Person> myList;
Run Code Online (Sandbox Code Playgroud)