Spring Data JPA - Benutzerdefinierte Abfrage mit mehreren Aggregatfunktionen in Folge

Ich war versucht, zurück Durchschnitt und die Anzahl der eine Reihe von Bewertungen, die in einer Abfrage an.
Ich schaffte es relativ leicht in zwei Abfragen nach dem Beispiel fand ich beim stöbern. Zum Beispiel:

@Query("SELECT AVG(rating) from UserVideoRating where videoId=:videoId")
public double findAverageByVideoId(@Param("videoId") long videoId);

aber so schnell, wie ich wollte, eine Durchschnittliche und eine Zählung in der gleichen Abfrage, begannen die Probleme. Nach vielen Stunden Experimentieren, habe ich gefunden, das hat funktioniert, so Teile ich es hier. Ich hoffe, es hilft.

1) ich brauchte eine neue Klasse für die Ergebnisse:

Den hatte ich auf die Klasse in der Abfrage:

@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);

Einer Abfrage nun zurück Durchschnittliche Bewertung und Anzahl der Bewertungen

InformationsquelleAutor formica | 2015-08-17

Schreibe einen Kommentar