带有多列的JPA / Hibernate @OrderBy注释和每个

时间:2017-02-07 09:04:55

标签: jpa hibernate-annotations jpa-annotations

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

由于

1 个答案:

答案 0 :(得分:10)

如果您的班级Person包含2个字段,firstNamelastName,那么您可以执行查询

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;