C'è qualche differenza quando si utilizza parole chiave primavera dati JPA tra:primavera dati JPA differenza tra findBy/findAllBy
List<SomeEntity> findBySomeCondition();
e
List<SomeEntity> findAllBySomeCondition();
C'è qualche differenza quando si utilizza parole chiave primavera dati JPA tra:primavera dati JPA differenza tra findBy/findAllBy
List<SomeEntity> findBySomeCondition();
e
List<SomeEntity> findAllBySomeCondition();
No, non v'è alcuna differenza tra loro, essi saranno eseguiti esattamente la stessa query, la parte All
viene ignorata da Data primavera, quando derivando la interrogare dal nome del metodo. L'unico bit importante è la parola chiave By
, qualsiasi cosa che segue viene considerata come un nome di campo (con l'eccezione di altre parole chiave come OrderBy
che incidentalmente può portare a nomi di metodi dall'aspetto strano come findAllByOrderByIdAsc
).
Questo significa qualcosa come questo è perfettamente valida:
List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition();
ed eseguirà esattamente la stessa query SQL come:
List<SomeEntity> findBySomeCondition();
o
List<SomeEntity> findAllBySomeCondition();
Update: I Non ho mai visto nessuna descrizione ufficiale di questo comportamento iour nella documentazione, ma in una recent blog post circa l'imminente 2.0 release di primavera dati (Kay) è stato spiegato:
Primavera dati metodo di analisi utilizza le parole chiave prefisso come
find
,exists
,count
edelete
e una terminazioneBy
parola chiave . Tutto ciò che inserisci trafind
eBy
rende il nome del tuo metodo più espressivo e non influisce sulla derivazione della query.
metodo findBy viene utilizzato se vogliamo trovare per nome o alcuni altri criteri come findByFirstName(String firstName);
findTutti i metodi si trovano generalmente fornendo la specifica
List<T> findAll(Specification<T> spec);
Si prega di consultare i documenti di seguito per maggiore chiarezza:
http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html
No, il metodo che si è scritto proviene da JPASpecificationExecutor. Sto parlando solo di JpaRepository. Posso creare il metodo findAllByFirstName (String firstName) e funzionerà in modo simile a findByFirstName. In questa domanda sto cercando di capire la differenza tra loro. – Nikita
Grazie per la descrizione – Nikita