使用Spring Data JPA关键字之间有什么区别:
List<SomeEntity> findBySomeCondition();
和
List<SomeEntity> findAllBySomeCondition();
Answers:
不,它们之间没有区别,它们将执行完全相同的查询,All
当从方法名称派生查询时,Spring Data会忽略该部分。唯一重要的一点是By
关键字,其后的所有内容都被视为字段名称(其他关键字(如OrderBy
偶然会导致某些奇怪的方法名称)之类的关键字除外findAllByOrderByIdAsc
)。
这意味着这样的事情是完全正确的:
List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();
并将执行与以下命令完全相同的SQL查询:
List<SomeEntity> findBySomeCondition();
要么
List<SomeEntity> findAllBySomeCondition();
Spring Data 2.3.6发行版的文档讨论了此功能:
除非使用结果限制关键字之一(例如使用a来在要创建的查询上设置不同的标记或/限制查询结果
find
),By
否则(或其他引入关键字)之间的任何文本都被视为描述性文本。Distinct
Top
First
在有关即将发布的Spring Data 2.0版本的博客文章中解释了功能的目的:
春季数据的方法解析使用前缀的关键字,例如
find
,exists
,count
,和delete
和终端By
关键字。一切你把之间find
,并By
让您的方法名称更具表现力,并且不影响查询的推导。
findDistinctBySomeCondition()
:4.4.2。查询创建
如果我们要通过名称或其他类似条件来查找,则使用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