Spring Data JPAキーワードを使用する場合、次の間に違いはありますか?
List<SomeEntity> findBySomeCondition();
そして
List<SomeEntity> findAllBySomeCondition();
いいえ、それらの間に違いはありません。それらはまったく同じクエリを実行します。メソッド名からクエリを導出するとき、Spring DataはAll
部分を無視します。唯一の重要なビットはBy
キーワードで、それに続くものはすべてフィールド名として扱われます(ただし、OrderBy
などの他のキーワードは例外的にfindAllByOrderByIdAsc
)。
これは、次のようなものが完全に有効であることを意味します。
List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();
そして、次とまったく同じSQLクエリを実行します。
List<SomeEntity> findBySomeCondition();
または
List<SomeEntity> findAllBySomeCondition();
更新:ドキュメントでこの動作の公式の説明を見たことはありませんでしたが、今後の 最近のブログ投稿 Spring Data(Kay)の2.0リリースが説明されました:
Spring Dataのメソッド解析では、
find
、exists
、count
、およびdelete
などのプレフィックスキーワードと、終了するBy
キーワードを使用します。find
とBy
の間に置くものはすべて、メソッド名をより表現力豊かにし、クエリの派生には影響しません。