有没有使用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