Grails中的executequery不加载key:value json

时间:2012-09-14 08:35:51

标签: mysql json grails gorm

我正在做这样的事情来获取数据......

 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(查询)的方式 但我似乎无法使用findAll()

实现此查询

请帮助

谢谢..

1 个答案:

答案 0 :(得分:0)

这是因为prods的实例只是具有查询结果的对象,而不是Product或其他域类的实例(您使用的HQL不代表域类)。你可以:

  • 考虑使用view进行此查询并将其映射为域类;
  • 手动构建输出;

第二个选项类似于(未经测试):

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

使用第二个选项来更改生成的结果,只需绘制地图的结构。如果需要,您还可以拥有地图列表。