web-dev-qa-db-ja.com

spring-data-jpa 2.1で長い/複雑なクエリを実装する方法

Spring JPAクエリの実装に関するアドバイスが必要です。入力の長さのため、私のクエリは複雑です。
入力として:

  • 15条件-nullでない場合は等しいかどうかを確認します。
  • 2条件-nullでないかどうかを確認
  • さらに、出力はページング可能である必要があります。

これは、次のような標準のPagingAndSortingRepositoryを使用することで解決できることを知っています。

Page<A> findAllByParam1AndParam2AndParam3Between...(@Nullable String param1, @Nullable String param2, @Nullable Integer param3,...) 

しかし、この解決策が私の入力である期間を見ると不明瞭に見え、あまりにも多くのパラメーターを持つその方法は良い解決策ではないと思います。また、例としてfindAllについて考えていましたが、これは、between条件ではなく、同等性をサポートしています。

他のオプションはありますか?
唯一の方法は、CriteriaBuilder?を使用してカスタムクエリを作成することです。

4
Paweł S

これを行うには、以下のオプションがあります。 1)hqlを使用します。すべてのテーブルをjpaエンティティとしてマップすることが必須であるためです。2)ネイティブクエリを使用することの欠点は、アプリケーションの移植性に影響を与えることですが、アプリケーションが正しく動作しない場合他のデータベースに移行する場合は、これを使用できます3)基準ビルダーを使用することです

Edit-> SQLとJPQLの両方に@Queryを使用して実行できることがわかりました。

詳細については、以下のリンクに従ってください

https://www.baeldung.com/spring-data-jpa-query

一部の春の開発者認定書でのQueryの使用。

それが役に立てば幸い

1
whysoseriousson