EDIT: Le soluzioni a questo problema sono forniti nel secondo e nel quarto risposta per quanto riguarda questa domanda setMaxResults for Spring-Data-JPA annotation?Recupero solo primo all'ultimo elemento/usando primavera dati JPA e @query annotazione
Obiettivo: Fetch la più grande/piccolo elemento per la proprietà z utilizzando un repository JPA di Spring Data e l'annotazione Spring Query.
Quello che ho finora
@Query("SELECT xelement FROM x xelement ORDER BY xelement.z")
public List<X> findFirstElement();
Problema: Questa query recupera tutti gli elementi (che non è davvero efficace). Se Vorrei utilizzare l'EntityManager direcly, ho potuto impostare il numero di risultati utilizzando
entityManager.setMaxResults(1)
solo ottenere il primo elemento.
Domanda: Come faccio a specificare il numero massimo di risultati che utilizzano il @ query annotazione?
Idea: utilizza una PageRichiesta di dimensioni 0 la strada da percorrere?
Vincoli: Sono consapevole della funzione di query "FindFirstBy ...." ma desidero/devo utilizzare l'annotazione @Query
.
Perché il metodo restituisce 'Elenco' quando è previsto solo il ritorno di un singolo elemento? Se la query è davvero così semplice, puoi evitare di usare '@ Query' e semplicemente avere' findFirstOrderByZ() '. In caso contrario, sarà necessario utilizzare la parola chiave LIMIT per limitare il numero di record restituiti 'SELEZIONA x DA xelementi x ORDINA PER x.z LIMIT 1'. –
manish
@manish: 1. per quanto riguarda la lista, questo doveva essere abbastanza flessibile nel caso in cui avrei commutato un numero arbitrario di elementi, ma sì, in linea di principio sei corretto, restituire una lista è eccessivo in questo caso. 2. Riguardo a "findFirst .." -> vedere i vincoli. 3. Sei sicuro che la parola chiave limite sia disponibile in JPQL? Suppongo di doverlo controllare ... Ho anche trovato http://stackoverflow.com/questions/9314078/setmaxresults-for-spring-data-jpa-annotation che risolve praticamente il problema. –
Trovato questo per essere coperto dalla seconda e quarta risposta in [http: // StackOverflow.com/domande/9314078/setmaxresults-per-primavera-dati-APP-annotazioni] [1] [1]: http://stackoverflow.com/questions/9314078/setmaxresults-for-spring-data -jpa-annotation –