web-dev-qa-db-ja.com

JPA / Hibernate @OrderByアノテーションと複数の列、それぞれにASC / DESC

複数の列を持つ@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

ありがとう

10
Sandy

PersonfirstNameの2つのフィールドを持つクラス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;
17
Neil Stockton