Ich habe versucht, einen Durchschnitt und die Anzahl einer Reihe von Bewertungen in einer Abfrage zurückzugeben. Ich schaffte es ziemlich einfach in zwei Abfragen nach dem Beispiel, das ich beim Browsen fand. Zum Beispiel:Spring Data JPA - Benutzerdefinierte Abfrage mit mehreren Aggregatfunktionen in Ergebnis
@Query("SELECT AVG(rating) from UserVideoRating where videoId=:videoId")
public double findAverageByVideoId(@Param("videoId") long videoId);
aber sobald ich eine mittlere und eine Zählung in der gleichen Abfrage wollte, begann der Ärger. Nach vielen Stunden des Experimentierens fand ich, dass das funktionierte, also teile ich es hier. Ich hoffe, es hilft.
1) brauchte ich eine neue Klasse für die Ergebnisse:
Die ich in der Abfrage, die Klasse zu verweisen hatte:
@Query("SELECT new org.magnum.mobilecloud.video.model.AggregateResults(AVG(rating) as rating, COUNT(rating) as TotalRatings) from UserVideoRating where videoId=:videoId")
public AggregateResults findAvgRatingByVideoId(@Param("videoId") long videoId);
Eine Abfrage gibt jetzt durchschnittliche Bewertung und Anzahl der Bewertungen
Bitte definieren Sie Ihre eigene Klasse – Garry
public class AggregateResults {private final Doppel Bewertung; private endgültige int totalRatings; public AggregateResults (doppelte Bewertung, lange totalRatings) { this.rating = rating; this.totalRatings = (int) totalRatings; } öffentliche doppelte getRating() { Rückgesprächsbewertung; } public int getTotalRatings() { Rückgabe gesamtRaten; } } – formica
danke ... Bitte fügen Sie dies zu Ihrer Antwort und beziehen sich – Garry