web-dev-qa-db-ja.com

Spring Data(JPA)派生クエリで複数のプロパティでソートする方法は?

このページ( http://docs.spring.io/spring-data/jpa/docs/current/reference/html/jpa.repositories.html )に記載されている例を見ていますメソッドの命名、次のような複雑なチェーンメソッド名を作成することは可能ですか?

findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc

彼らが与える例では、1つの値に対してのみOrderByを実行しています。上記の例では、ProgDateStartTimeは2つの個別の値になります。

42
PDStat

コツは、方向キーワードAscおよびDescを使用して、ソートするプロパティを単純に区切ることです。したがって、おそらくクエリメソッドに必要なのは次のようなものです。

…OrderByProgDateAscStartTimeAsc

Ascによって最初のプロパティ定義を終了し、次のプロパティを使用し続けることに注意してください。

一般的に、メソッド名が特定の長さまたは複雑さを超えたら、@Queryベースのクエリに切り替えることをお勧めします。主な理由は、クライアントがこれらの非常に長いメソッドを呼び出すのは厄介だからです。 @Queryを使用すると、クエリ言語の完全な能力に加えて、クエリの意図を表現するためのより高レベルの言語である可能性のある適切なサイズのメソッド名を取得できます。

103
Oliver Drotbohm

はい、可能です。

これを試して:

findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc(String programme, String director, Date progStart, Date progEnd);

私はコードをテストしていませんが、すでにやったことによると、動作するはずです。

6
Paulo Fidalgo