Stavo cercando di restituire una media e il conteggio di un insieme di valutazioni in una query. L'ho gestito abbastanza facilmente in due query seguendo l'esempio che ho trovato durante la navigazione. Per esempio:Spring Data JPA - Query personalizzata con più funzioni di aggregazione nel risultato
@Query("SELECT AVG(rating) from UserVideoRating where videoId=:videoId")
public double findAverageByVideoId(@Param("videoId") long videoId);
ma non appena ho voluto una media e un conteggio nella stessa query, cominciarono i problemi. Dopo molte ore di sperimentazione, ho scoperto che questo ha funzionato, quindi lo sto condividendo qui. Spero possa essere d'aiuto.
1) avevo bisogno di una nuova classe per i risultati:
L'ho dovuto fare riferimento a quella classe nella query:
@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);
una query ora ritorna valutazione media e il numero di punteggi
Si prega di definire la classe personalizzata – Garry
AggregateResults public class {private finale doppio rating; private final int totalRatings; Public AggregateResults (doppia valutazione, long totalRatings) { this.rating = rating; this.totalRatings = (int) totalRatings; } public double getRating() { indice di rendimento; } public int getTotalRatings() { return totalRatings; } } – formica
grazie ... Si prega di aggiungere questo alla vostra risposta e riguardano – Garry