2017-02-07 29 views
1

複数の列を持つ@OrderByアノテーションを使用してOneToManyフィールドをソートし、それぞれのソート順を指定したいと思いますが、情報がどこにあるか、それが不可能かどうかをどこでも知ることができます。注釈のための 仕様は言う:JPA/Hibernate @OrderBy複数の列とそれぞれのASC/DESCでの注釈

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

を定義することができるという点で

は、「カラム1」、「COLUMN2」などの列ですか?またはFIELDS? –

+0

申し訳ありませんが、フィールド名は – Sandy

+0

です。JPAプロバイダはここに記載されている情報に基づいて問題を抱えており、 –

答えて

4

をあなたがして、その後2つのフィールド、firstNamelastNameでクラスPersonを持っている場合あなたができるクエリ

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; 
+0

ありがとうございますが、私は、特にアノテーションについてのクエリーについては言及していません。私はOneToManyのコレクションがフェッチされたときにソートされるようにしたい。 – Sandy

+0

が更新されました。全く同じ構文が適用されます –

+0

私はこれを試しましたが、アプリケーションをデプロイするときに解析エラーが発生します: "org.hibernate.HibernateException:order-by fragmentを解析できません"。私は私のポストを更新します。 – Sandy

関連する問題