2011-03-07 20 views
4

我有這個域名:Grails groupProperty and order。怎麼運行的?

class Participation { 
    ParticipationStatus status 
} 
class ParticipationStatus{ 
    String name 
    Date creationDate 
} 

我創建一個查詢:

Participation.createCriteria().list{ 
    createAlias("status","statusAlias") 
    order "statusAlias.creationDate" 
    projections{ 
    groupProperty "id"  
    } 
} 

但是我收到一個錯誤: 產生的原因:值java.sql.SQLException:ORA-00979:N'est PAS une expression GROUP BY

我正在工作2天前在此查詢grrrr! ;-)

非常感謝

回答

8

您在彙總查詢中使用的每個字段(使用projections一)應該是一個groupProperty,或只是一個聚集函數的參數(即,在projections反正)。 在這個例子中,試試

Participation.createCriteria().list{ 
    createAlias("status","statusAlias") 
    order "statusAlias.creationDate" 
    projections{ 
    groupProperty "id"  
    groupProperty "statusAlias.creationDate" 
    } 
} 
+0

謝謝。我試過這個,它的工作,但結果是[[1,日期對象],[2,dateobject]],並希望只接收[1,2](僅限ID) – 2011-03-07 14:52:21

+1

你不能,如果你使用'小組由'。分組會打破記錄的原始順序,因此您只能對結果數據集進行「排序」 - 並且需要爲其添加日期字段。 OTOH,你需要組合嗎?如果'id'是Grails的''id',那麼它無論如何都是唯一的。 – 2011-03-07 15:00:10