Gibt es einen Unterschied bei der Verwendung von Spring Data JPA keywords zwischen:Spring Data JPA Unterschied zwischen findBy/findAllBy
List<SomeEntity> findBySomeCondition();
und
List<SomeEntity> findAllBySomeCondition();
Gibt es einen Unterschied bei der Verwendung von Spring Data JPA keywords zwischen:Spring Data JPA Unterschied zwischen findBy/findAllBy
List<SomeEntity> findBySomeCondition();
und
List<SomeEntity> findAllBySomeCondition();
Nein, es gibt keinen Unterschied zwischen ihnen, werden sie ausführen genau die gleiche Abfrage, der All
Teil von Spring Data ignoriert, wenn die Ableitung Abfrage vom Methodennamen. Das einzige wichtige Bit ist das Schlüsselwort By
, alles, was darauf folgt, wird als Feldname behandelt (mit Ausnahme von anderen Schlüsselwörtern wie OrderBy
, was übrigens zu merkwürdig aussehenden Methodennamen wie findAllByOrderByIdAsc
führen kann).
Das bedeutet in etwa so perfekt gültig ist:
List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();
Und ausführen wird genau die gleiche SQL-Abfrage wie:
List<SomeEntity> findBySomeCondition();
oder
List<SomeEntity> findAllBySomeCondition();
Update: I Ich habe noch nie eine offizielle Beschreibung dieses Verhaltens gesehen iour in der Dokumentation, sondern in einem recent blog post über die bevorstehende Version 2.0 von Spring Data (Kay) erklärt wurde:
Spring Data Methode Parsing verwendet Präfix Schlüsselwörter wie
find
,exists
,count
unddelete
und einen AbschlussBy
Stichwort . Alles, was Sie zwischenfind
undBy
eingeben, macht Ihren Methodennamen aussagekräftiger und wirkt sich nicht auf die Abfrageableitung aus.
findBy Methode wird verwendet, wenn wir nach Namen suchen wollen oder einige andere Kriterien wie findByFirstName(String firstName);
findAll Methoden im Allgemeinen findet durch Angabe der Spezifikation
List<T> findAll(Specification<T> spec);
Bitte siehe docs unten für mehr Klarheit:
http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html
Nein, diese Methode, die Sie geschrieben haben, stammt aus JPASpecificationExecutor. Ich spreche nur über JpaRepository. Ich kann Methode findAllByFirstName (String firstName) erstellen und es funktioniert ähnlich wie findByFirstName. In dieser Frage versuche ich den Unterschied zwischen ihnen zu verstehen. – Nikita
Danke für die Beschreibung – Nikita