Spring Data JPA unterstützt das Zählen von Entitäten mithilfe von Spezifikationen. Aber gibt es eine Möglichkeit, Entitäten mithilfe der Auflösung von Methodennamen zu zählen? Angenommen, ich möchte, dass eine Methode countByName
Entitäten mit einem bestimmten Namen zählt, genau wie eine Methode findByName
, um alle Entitäten mit einem bestimmten Namen abzurufen.
java
spring
spring-data-jpa
YaoFeng
quelle
quelle
Antworten:
Ab Spring Data 1.7.1.RELEASE können Sie dies auf zwei verschiedene Arten tun:
1) Die neue Methode , bei der die Abfrage sowohl zum Zählen als auch zum Löschen von Abfragen verwendet wird. Lesen Sie dies (Beispiel 5). Beispiel,
2) Der alte Weg , @Query-Annotation verwenden.
Beispiel,
oder auch mit @Param Annotation,
Überprüfen Sie auch dies, also antworten Sie .
quelle
Solange Sie die Version 1.4 nicht verwenden, können Sie explizite Anmerkungen verwenden:
Beispiel:
quelle
long
stattint
, sonst werden Sie eine Classcast ohne Hinweise erhaltenJpaRepository erweitert auch QueryByExampleExecutor. Sie müssen also nicht einmal benutzerdefinierte Methoden auf Ihrer Benutzeroberfläche definieren:
Und dann fragen Sie wie:
quelle
int age
wird zwar nicht festgelegt, aberInteger age
aus der Stichprobe ausgeschlossen (zumindest in Eclipselink)Diese Funktion wurde in Version 1.4 M1 hinzugefügt
quelle
Arbeitsbeispiel
Anruf von der DAO-Schicht
quelle
Laut Abel ist nach der Version 1.4 (getestet in Version 1.4.3.RELEASE) dies folgendermaßen möglich:
public long countByName (String name);
quelle
Anscheinend ist es jetzt DATAJPA-231 implementiert
quelle
Danke euch allen! Jetzt ist es Arbeit. DATAJPA-231
Es wird schön sein, wenn es möglich wäre, eine Zählung zu erstellen ... nach ... Methoden wie finden ... nach Einsen. Beispiel:
quelle
Gemäß dem Problem DATAJPA-231 ist die Funktion noch nicht implementiert.
quelle
Ich habe erst seit ein paar Wochen damit gearbeitet, aber ich glaube nicht, dass dies unbedingt möglich ist, aber Sie sollten in der Lage sein, den gleichen Effekt mit etwas mehr Aufwand zu erzielen. Schreiben Sie die Abfrage einfach selbst und kommentieren Sie den Methodennamen. Es ist wahrscheinlich nicht viel einfacher als die Methode selbst zu schreiben, aber meiner Meinung nach ist es sauberer.
Bearbeiten: es ist jetzt nach DATAJPA-231 möglich
quelle
quelle
Wenn jemand die Anzahl anhand mehrerer Bedingungen ermitteln möchte, finden Sie hier eine benutzerdefinierte Beispielabfrage
quelle