2016-05-16 13 views

risposta

15

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 e delete e una terminazione By parola chiave . Tutto ciò che inserisci tra find e By rende il nome del tuo metodo più espressivo e non influisce sulla derivazione della query.

+0

Grazie per la descrizione – Nikita

0

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

+0

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

Problemi correlati