Spring Data JPAを使用してSpringBootアプリケーションを開発しています。私はいくつかのフィールドでグループ化し、カウントを取得するカスタムJPQLクエリを使用しています。以下は私のリポジトリメソッドです。Spring Data JPA GROUP BYクエリからカスタムオブジェクトを返す方法
@Query(value = "select count(v) as cnt, v.answer from Survey v group by v.answer")
public List<?> findSurveyCount();
それが働いていると、次のように結果が得られた:どのように私はこれを達成することができます
[
{ "cnt":1, "answer":"a1" },
{ "cnt":2, "answer":"a2" }
]
:
[
[1, "a1"],
[2, "a2"]
]
私はこのような何かを取得したいのでしょうか?
それは動作していません、発射エラー: '原因:java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:Unable [SurveyAnswerReport]クラスの検索[com.furniturepool.domain.Survey v group by v.answer]から新しいSurveyAnswerReport(v.answer、count(v.id))を選択する \t at org.hibernate.jpa.spi.AbstractEntityManagerImpl。コンバート(AbstractEntityManagerImpl.java:1750) \t at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677) \t at org.hibernate.jpa.spi.AbstractEnti ......... .' –
あなたの出力にあるこの「SurveyAnswerReport」とは何ですか? 'SurveyAnswerStatistics'を自分のクラス' SurveyAnswerReport'に置き換えたと仮定します。完全修飾クラス名を指定する必要があります。 – Bunti
Beanクラスは完全修飾されている必要があります。つまり、完全なパッケージ名を含める必要があります。 'com.domain.dto.SurveyAnswerReport'のようなものです。 – manish