パッケージ jakarta.data.repository

アノテーションインターフェース OrderBy


リポジトリメソッドにアノテーションを付けて、結果の並べ替えをリクエストします。

リポジトリメソッドに複数の OrderBy アノテーションが指定されている場合、ソートの優先順位は OrderBy アノテーションが指定された順序に従い、その後は Sort パラメーターまたは任意の Order パラメーターによって動的に提供されるソート条件に従います。

たとえば、次の例では、まず lastName 属性で昇順で並べ替え、次に同じ lastName を持つエンティティについては、firstName 属性でこれも昇順で並べ替えます。同じ lastName と firstName を持つエンティティの場合。

 @OrderBy("lastName")
 @OrderBy("firstName")
 @OrderBy("id")
 Person[] findByZipCode(int zipCode, PageRequest pageRequest);
 

昇順と降順の解釈はデータベースによって決まりますが、一般的には次のようになります。

  • 数値の昇順は、小さい数値が大きな数値の前に来る自然な順序です。
  • 文字列値の昇順は辞書式順序であり、A が Z より前
  • ブール値の昇順では、false が true の前に配置されます。

@OrderBy アノテーションを持つリポジトリメソッドには、次のものを含めることはできません。

  • メソッド名によるクエリ OrderBy キーワードを名前に含めず
  • ORDER BY 句を含む JDQL または JPQL クエリを指定する @Query アノテーション。

Jakarta Data プロバイダーは、コンパイル時にこのようなリポジトリメソッド宣言を拒否するか、UnsupportedOperationExceptionSE をスローするメソッドを実装することができます。

データベースがリクエストされた並べ替え条件で順序付けできない場合、リポジトリメソッドは DataException またはより具象サブクラスで失敗します。

  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static @interface
    メソッド上で複数の OrderBy アノテーションを有効にします。
  • 必須定数のサマリー

    必須要素
    修飾子と型
    必須要素
    説明
    並べ替えの基準となるエンティティ属性名。
  • オプション要素の概要

    オプション要素
    修飾子と型
    オプションの要素
    説明
    boolean
    この属性で並べ替えるときに降順を使用するかどうかを示します。
    boolean
    大文字と小文字を区別する照合順序を使用してデータベースから大文字と小文字を区別しない順序付けをリクエストするかどうかを示します。
  • 要素の詳細

    • value

      StringSE value

      並べ替えの基準となるエンティティ属性名。

      以下に例を示します。

       @OrderBy("age")
       Stream<Person> findByLastName(String lastName);
       
      戻り値:
      エンティティの属性名。
    • descending

      boolean descending

      この属性で並べ替えるときに降順を使用するかどうかを示します。

      デフォルト値の false は昇順ソートを意味します。

      戻り値:
      降順 (または昇順) を使用するかどうか。
      デフォルト:
      false
    • ignoreCase

      boolean ignoreCase

      大文字と小文字を区別する照合順序を使用してデータベースから大文字と小文字を区別しない順序付けをリクエストするかどうかを示します。大文字と小文字を区別しない照合順序を使用するデータベースは、リクエストされた ignoreCase 値に関係なく、大文字と小文字を区別しない順序付けを実行します。

      デフォルト値は false です。

      戻り値:
      プロパティの大文字と小文字を区別しない並べ替えをリクエストするかどうか。
      デフォルト:
      false