Ответ 1
Нет, между ними нет никакой разницы, они будут выполнять точно такой же запрос, часть All
игнорируется Spring Data при получении запроса из имени метода. Единственный важный бит - это ключевое слово By
, все последующее его обрабатывается как имя поля (за исключением других ключевых слов, таких как OrderBy
, что, в свою очередь, может привести к появлению некоторых странно выглядящих имен методов, таких как findAllByOrderByIdAsc
).
Это означает, что это действительно так:
List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();
И выполнит точно такой же SQL-запрос, как:
List<SomeEntity> findBySomeCondition();
или
List<SomeEntity> findAllBySomeCondition();
Обновление: Я никогда не видел официального описания этого поведения в документации, но в недавнем сообщении в блоге о предстоящей версии 2.0 Spring Data (Kay) было объяснено:
Spring Разбор метода Datas использует префиксные ключевые слова, такие как
find
,exists
,count
иdelete
и завершающее ключевое словоBy
. Все, что вы ставите междуfind
иBy
, делает ваше имя метода более выразительным и не влияет на вывод запроса.