Ich entwickle eine Spring Boot-Anwendung mit Spring Data JPA. Ich verwende eine benutzerdefinierte JPQL-Abfrage, um nach einem Feld zu gruppieren und die Anzahl zu erhalten. Folgendes ist meine Repository-Methode.Zurückgeben eines benutzerdefinierten Objekts aus einer Spring Data JPA GROUP BY-Abfrage
@Query(value = "select count(v) as cnt, v.answer from Survey v group by v.answer")
public List<?> findSurveyCount();
Es funktioniert und das Ergebnis wird wie folgt erhalten:
[
[1, "a1"],
[2, "a2"]
]
Ich möchte so etwas bekommen:
[
{ "cnt":1, "answer":"a1" },
{ "cnt":2, "answer":"a2" }
]
Wie kann ich das erreichen?
Es funktioniert nicht, Auslösen von Fehler: 'verursacht durch: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable Um die Klasse [SurveyAnswerReport] zu lokalisieren [wählen Sie den neuen SurveyAnswerReport (v.answer, count (v.id)) aus com.furniturpool.domain.Survey v group by v.answer] \t bei org.hibernate.jpa.spi.AbstractEntityManagerImpl. konvertieren (AbstractEntityManagerImpl.java:1750) \t bei org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert (AbstractEntityManagerImpl.java:1677) \t bei org.hibernate.jpa.spi.AbstractEnti ......... .' –
Was ist dieser 'SurveyAnswerReport' in Ihrer Ausgabe? Ich nehme an, Sie haben "SurveyAnswerStatistics" durch Ihre eigene Klasse "SurveyAnswerReport" ersetzt. Sie müssen den vollständig qualifizierten Klassennamen angeben. – Bunti
Die Bean-Klasse muss vollständig qualifiziert sein, dh den vollständigen Paketnamen enthalten. Etwas wie 'com.domain.dto.SurveyAnswerReport'. – manish