Есть ли разница при использовании Spring Data JPA ключевых слов между:разница Spring Data JPA между findBy/findAllBy
List<SomeEntity> findBySomeCondition();
и
List<SomeEntity> findAllBySomeCondition();
Есть ли разница при использовании Spring Data JPA ключевых слов между:разница Spring Data JPA между findBy/findAllBy
List<SomeEntity> findBySomeCondition();
и
List<SomeEntity> findAllBySomeCondition();
Нет, нет никакой разницы между ними, они будут выполнять точно такой же запрос, All
части игнорируются Spring Data при выводе запрос из имени метода. Единственным важным битом является ключевое слово By
, все последующее его обрабатывается как имя поля (за исключением других ключевых слов, таких как OrderBy
, что, в свою очередь, может привести к некоторым странным типам имен методов, таких как findAllByOrderByIdAsc
).
Это означает что-то вроде этого вполне допустимо:
List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();
И будет выполнять точно такой же SQL запрос как:
List<SomeEntity> findBySomeCondition();
или
List<SomeEntity> findAllBySomeCondition();
Update: I Никогда не видел официального описания этого поведения iour в документации, но в recent blog post о предстоящем выпуске Spring Data (Kay) 2.0 было объяснено:
метод синтаксического анализа Spring Data использует префикс ключевые слова, как
find
,exists
,count
иdelete
и завершающегоBy
ключевое слово , Все, что вы установили междуfind
иBy
, делает ваше имя метода более выразительным и не влияет на вывод запроса.
метод findBy используется, если мы хотим, чтобы найти по имени или некоторые другие критерии, такие как findByFirstName(String firstName);
findВсе методы обычно обнаруживаются путем предоставления спецификации
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