EDIT: Lösungen für dieses Problem sind in der zweiten und vierten Antwort zu dieser Frage setMaxResults for Spring-Data-JPA annotation? bereitgestelltnur erste/letzte Element Fetching mit Spring Data JPA und @Query Anmerkung
Ziel: Fetch die größte/kleinste Element für Eigenschaft z, das ein Spring Data JPA-Repository und die Spring Query-Annotation verwendet.
Was ich bisher
@Query("SELECT xelement FROM x xelement ORDER BY xelement.z")
public List<X> findFirstElement();
Problem haben: Diese Abfrage ruft alle Elemente (die nicht wirklich wirksam ist). Wenn ich die EntityManager direcly verwenden würde, könnte ich die Anzahl der Ergebnisse gesetzt
entityManager.setMaxResults(1)
mit nur das erste Element zu erhalten.
Frage: Wie kann ich die maximale Anzahl von Ergebnissen geben Sie die @Query Anmerkung verwenden?
Idee: Verwenden Sie eine PageRequest der Größe 0 den Weg zu gehen?
Einschränkungen: Ich bin mir der "FindFirstBy ...." Abfrage-Funktion bewusst, aber ich möchte/muss die @Query
Annotation verwenden.
Warum gibt Ihre Methode 'List' zurück, wenn nur ein einzelnes Element zurückgegeben werden soll? Wenn die Abfrage wirklich so einfach ist, können Sie '@ Query' vermeiden und einfach' findFirstOrderByZ() 'verwenden. Andernfalls müssen Sie das Schlüsselwort 'LIMIT' verwenden, um die Anzahl der zurückgegebenen Datensätze einzuschränken: SELECT x FROM xelement x ORDER BY x.z LIMIT 1. –
manish
@manish: 1. In Bezug auf die Liste, das war nur flexibel genug für den Fall, dass ich eine beliebige Anzahl von Elementen wechseln würde, aber ja, im Prinzip bist du richtig, die Rückgabe einer Liste ist in diesem Fall Overkill. 2. Bezüglich der "findFirst .." -> siehe Einschränkungen. 3. Sind Sie sicher, dass das Limit-Schlüsselwort in JPQL verfügbar ist? Ich denke, ich muss es überprüfen .... Ich fand auch http://stackoverflow.com/questions/9314078/setmaxresults-for-spring-data-jpa-annotation, die das Problem ziemlich löst. –
Dies wurde durch die zweite und vierte Antwort in [http: // stackoverflow.com/Fragen/9314078/setMaxResults-for-Feder-data-JPA-Annotation] [1] [1]: http://stackoverflow.com/questions/9314078/setmaxresults-for-spring-data -jpa-annotation –