0

QuestionAnswer の可能なスコアを計算するクエリを作成しています。クエリを実行すると、PSQLException が発生します。

モデルに関する情報

質問に正しく答える方法は複数あるため、QuestionAnswer は複数の (少なくとも 1 つの) questionAnswerPossibilities を持つことができます。

すべての questionAnswerPossibility には複数の questionAnswerParts があります。以下のクエリでは、questionAnswerPossibility ごとにスコアをクエリします。

問題のあるクエリ

クエリ自体は SQL を生成しますが、SQL は実行できません

  def queryMogelijkePuntenByVragenViaOpenVragen()(implicit session: Session) = {
    (for{
      ovam <- OpenVraagAntwoordMogelijkheden //questionAnswerPossibilites
      ovad <- OpenVraagAntwoordOnderdelen if ovad.ovamId === ovam.id //questionAnswerParts
      ova <- OpenVraagAntwoorden if ovam.ovaId === ova.id //questionAnswers
    } yield ((ova, ovam), ovad.punten))
      .groupBy{ case ((ova, ovam), punten) => (ova, ovam)}
      .map{ case ((ova, ovam), query) => (ova, ovam, query.map(_._2).sum)}
}

ここで生成された SQL (postgreSQL)

select x2."id", x2."vraag_id", x3."id", x3."volgorde", x3."ova_id", sum(x4."punten") 
from "open_vraag_antwoord_mogelijkheden" x3, "open_vraag_antwoord_onderdelen" x4, "open_vraag_antwoorden" x2 
where (x4."ovam_id" = x3."id") and (x3."ova_id" = x2."id")
group by (x2."id", x2."vraag_id"), (x3."id", x3."volgorde", x3."ova_id")

問題は、SQL を実行できないことです。次のエラーが表示されます。

play.api.Application$$anon$1:
Execution exception[[
PSQLException: ERROR: column "x2.id" must appear in the GROUP BY clause or be used in an aggregate function
  Position: 8]]

生成された SQL に括弧が多すぎます。SQL の最後の部分は

group by x2."id", x2."vraag_id", x3."id", x3."volgorde", x3."ova_id"

ただし、スリックは括弧で生成しますが、ここで何か間違っていますか? それともこれはバグですか?

4

1 に答える 1