Specification-検索の詳細オプション
2002 ワード
詳細オプション機能を実現するには、複数のオプション選択のDBクエリが必要です.この場合,JPAを用いてクエリーごとに作成・メンテナンスする管理ポイントが多く,コードもきれいではない.Googleを通じて、JPA Specificationを使って詳細なオプションを実現すればいいです.これにより、コードを直感的に読むことができ、重複したクエリーを作成することができるので、混同されません.リポジトリにextends JpaSpecificationExecutorを追加します. とModelName Specificationクラスを生成します. クラスでは、詳細オプションに基づいて各クエリーspecが作成されます.
次の例のように、詳細なspecを作成します.
次に、特定のオプションに基づいて複数の選択を行い、前に作成した仕様を組み合わせます.「.and」や「.or」など、上記で作成したオプション固有の仕様を使用して、必要な統合(?)を取得します.specを作成します.
次の例のように、詳細なspecを作成します.
private static Specification<TestModelName> testIdEquals(Long testId) {
return (root, query, builder) ->
builder.equal(root.get("testId"), momentId);
}
次に、特定のオプションに基づいて複数の選択を行い、前に作成した仕様を組み合わせます.「.and」や「.or」など、上記で作成したオプション固有の仕様を使用して、必要な統合(?)を取得します.specを作成します.
public static Specification<TestModelName> findtestIdByModifiedAt(TestForm testForm) {
Specification<TestModelName> testIdSpec = testIdEquals(testForm.getContents().getValue());
Specification<TestModelName> modifiedSepc = modifiedDataBetween(testForm.getTimeRange().getFromDate(),testForm.getTimeRange().getToDate());
Specification<TestModelName> enableDataSpec = enabledFlagEquals();
return Specification.where(modifiedSepc).and(enableDataSpec).and(testIdSpec);
}
Reference
この問題について(Specification-検索の詳細オプション), 我々は、より多くの情報をここで見つけました https://velog.io/@rosa/JPA-Specification-상세-옵션-검색テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol