ホームページ >Java >&#&チュートリアル >Spring Data JPAでアノテーションを使用してクエリ結果を制限する方法は?

Spring Data JPAでアノテーションを使用してクエリ結果を制限する方法は?

DDD
DDDオリジナル
2024-11-04 03:08:30947ブラウズ

How to Limit Query Results with Annotations in Spring Data JPA?

Spring-Data-JPA の setMaxResults アノテーション

Spring-Data-JPA は強力な JPA リポジトリ抽象化ライブラリであり、Spring でのデータ アクセスを簡素化しますベースの Java アプリケーション。ただし、アノテーションを使用してクエリによって返される結果の最大数を設定するのは困難でした。

Spring Data JPA 1.7.0 (Evans Release Train) Solution

In Spring Data JPA 1.7.0 以降では、状況は改善されています。 Top キーワードと First キーワードを使用してクエリ結果を制限できるようになりました。例:

findTop10ByLastnameOrderByFirstnameAsc(String lastname);

Spring Data は、返される結果の数を指定された数に自動的に制限します (省略された場合のデフォルトは 1)。 OrderBy 句またはメソッド内の Sort パラメーターを使用して、結果の順序付けが重要になります。

Spring Data JPA 1.7.0 より前

この機能強化の前は、データ スライスを取得するには、ページネーションを使用する必要がありました。 Spring Data は、ページ分割リクエストには Pageable インターフェイスを、結果処理には Page 抽象化を採用しています。

次のようにリポジトリ インターフェイスを実装します。

public interface UserRepository extends Repository<User, Long> {

  List<User> findByUsername(String username, Pageable pageable);
}

結果を取得するにはインターフェイスを使用します。

Pageable topTen = new PageRequest(0, 10);
List<User> result = repository.findByUsername("Matthews", topTen);

コンテキスト情報が必要な場合は、戻り値の型として Page を使用します。

public interface UserRepository extends Repository<User, Long> {

  Page<User> findByUsername(String username, Pageable pageable);
}

クライアント コードはこの情報を利用できます。

Pageable topTen = new PageRequest(0, 10);
Page<User> result = repository.findByUsername("Matthews", topTen);
Assert.assertThat(result.isFirstPage(), is(true));

戻り値として Page を使用するtype は、要素の合計数を決定するためにカウント射影クエリの実行をトリガーします。さらに、安定した結果を保証するために、PageRequest には常に並べ替え情報を含めてください。

以上がSpring Data JPAでアノテーションを使用してクエリ結果を制限する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。