我想用带有多列的@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
由于
答案 0 :(得分:10)
如果您的班级Person
包含2个字段,firstName
和lastName
,那么您可以执行查询
SELECT p FROM Person p ORDER BY p.firstName ASC, p.lastName DESC
这是JPQL BNF所说的。
就何时拥有Person
个对象的列表而言,您可以像这样定义List排序(相同的语法)
@OneToMany
@OrderBy("firstName ASC, lastName DESC")
List<Person> myList;