Spring Data JPA与findBy / findAllBy的区别

在以下之间使用Spring Data JPA关键字时是否有任何区别:

List findBySomeCondition(); 

 List findAllBySomeCondition(); 

不,它们之间没有区别,它们将执行完全相同的查询,当从方法名称派生查询时,Spring Data会忽略All部分。 唯一重要的一点是By关键字,其后面的任何内容都被视为一个字段名称(除了OrderBy之外的其他关键字,它们可能会导致一些奇怪的方法名称,如findAllByOrderByIdAsc )。

这意味着这样的东西是完全有效的:

 List findAnythingYouWantToPutHereBySomeCondition(); 

并将执行完全相同的SQL查询:

 List findBySomeCondition(); 

要么

 List findAllBySomeCondition(); 

更新:我从未在文档中看到任何关于此行为的官方描述,但在最近关于即将发布的Spring Data(Kay)2.0版本的博客文章中 ,它解释了:

Spring Data的方法解析使用前缀关键字,如findexistscountdelete以及终止By关键字。 您在findBy之间放置的所有内容都会使您的方法名称更具表现力,并且不会影响查询派生。

如果我们想要通过名称或其他标准找到findByFirstName(String firstName);则使用findBy方法findByFirstName(String firstName);

findAll方法通常通过提供规范来找到

 List findAll(Specification spec); 

请参阅下面的文档以获得更清晰:

http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html