2012-09-14 27 views
0

我在做這樣的事情來獲取數據...的executeQuery Grails中不加載項:值JSON

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 ERY()

請幫助

謝謝..

回答

0

這是因爲恰當激勵的情況下,只是與您的查詢的結果對象,而不是產品或其他領域類的實例(您使用的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 

使用第二個方法,來改變所產生的結果,只是cange地圖的結構。如果需要,你也可以有一個地圖列表。

+0

以及如何使用vie作爲這個查詢和映射的域類? – ashishashen

+0

你知道如何創建數據庫視圖嗎?映射與表格非常相似。 –

+0

沒有..你可以提供一些鏈接..和第二個選項工作正常。但它仍然不是我需要的格式。我需要它像.. {行:[{ 「ID」: 「22」, \t \t \t 「類別名稱」: 「spurTree13」, 「CategoryRole」: 「利潤驅動程序1」, 「PrimaryObjective」:「增加VOLUME1 「,},{so ...}]}} – ashishashen