0

私はデータを取得するためにこのようなことをしています...

 def prods = Product.executeQuery("select category.id,category.name, avg(competition1Price), avg(competition2Price), avg(onlineCompetitionPrice) from Product group by category.id")
        render prods as JSON

私が得ている出力はこれではありません..

        [[1,"Colchones y",1657.4784,2071.5,1242.5]]

これらは単なる値です..

同じクエリを使用してキーと値のペアを取得したい.. findAll(query) を使用する方法と同じですが、findAll() を使用してこのクエリを実装できないようです

助けてください

ありがとう..

4

1 に答える 1

0

これは、prodsのインスタンスがクエリの結果を含む単なるオブジェクトであり、Productまたは他のドメインクラスのインスタンスではないためです(ドメインクラスを表さないHQLを使用しました)。あなたはできる:

  • このクエリにビューを使用し、ドメインクラスとしてマッピングすることを検討してください。
  • 手動で出力を作成します。

2番目のオプションは次のようなものです(テストされていません):

  def output = [[:]]
  prods.each { result ->
    def prod = ['category.id' : result[0] , 'category.name': result[1]] //and so on...
    output << prod
  }
  render output as JSON

この2番目のオプションを使用して、生成される結果を変更するには、マップの構造を変更するだけです。必要に応じて、マップのリストを作成することもできます。

于 2012-09-14T12:16:30.637 に答える