10

我想使用带有多个列的@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

谢谢

4

1 回答 1

24

如果你有一个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;
于 2017-02-07T09:07:10.093 回答