有沒有使用Spring數據JPA關鍵字時,任何差別之間:春數據JPA差異
List<SomeEntity> findBySomeCondition();
和
List<SomeEntity> findAllBySomeCondition();
有沒有使用Spring數據JPA關鍵字時,任何差別之間:春數據JPA差異
List<SomeEntity> findBySomeCondition();
和
List<SomeEntity> findAllBySomeCondition();
沒有,它們之間沒有什麼區別,他們將執行完全相同的查詢時,All
部分是由Spring數據推導時,忽略從方法名稱查詢。唯一重要的是By
關鍵字,它後面的任何內容都被視爲字段名稱(除了其他關鍵字,如OrderBy
,這些關鍵字可能會導致一些奇怪的外觀方法名稱,如findAllByOrderByIdAsc
)。
這意味着這樣的事情是完全合法:
List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();
並且將執行完全一樣的SQL查詢爲:
List<SomeEntity> findBySomeCondition();
或
List<SomeEntity> findAllBySomeCondition();
更新:我我從來沒有看到過這種行爲的官方描述在文檔中,但在recent blog post關於Spring數據(凱)即將2.0版本iour有人解釋:
春數據的方法解析使用前綴關鍵字,比如
find
,exists
,count
,並delete
和終止By
關鍵詞。您在find
和By
之間放置的所有內容都會使您的方法名稱更具表達性,並且不會影響查詢派生。
findBy方法使用或一些其他的標準,如findByFirstName(String firstName);
findAll方法一般通過提供規格發現
List<T> findAll(Specification<T> spec);
請參考下面的文檔更加清晰:
http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html
不,你寫的方法來自JPASpecificationExecutor。我只是談論JpaRepository。我可以創建方法findAllByFirstName(String firstName),它的作用類似於findByFirstName。在這個問題中,我試圖理解它們之間的區別。 – Nikita
感謝您的描述 – Nikita