2010-05-06 1 views

ответ

2

работа в Граалей 1.2.1

def c = C.createCriteria() 
def pl = c.list { 
    projections { 
     countDistinct 'id', 'myCount' 
     groupProperty 'a' 
    } 
    order ('myCount', 'desc') 
} 

ответ, например

[[10,a3],[2,a1],[1,a2]] 
2

Я хотел бы попробовать

def c = b.createCriteria() 
def results = c { 
    projections { 
     groupProperty("a") 
     rowCount() 
    } 
    order("a") 
} 

Примечание это не тестировалась.

+0

Это почти решает проблему, но как мне упорядочить по счету? – skurt

9

С grails 1.2 вы можете создавать псевдонимы и упорядочивать созданные псевдонимы.

См. https://cvs.codehaus.org/browse/GRAILS-3875 и https://cvs.codehaus.org/browse/GRAILS-3655 для получения более подробной информации.

Применительно к своему собственному коду, запрос HQL будет:

def c = b.createCriteria() 
def results = c { 
    projections { 
    groupProperty("a") 
    count("a", 'myCount') //Implicit alias is created here ! 
    } 
    order 'myCount' 
} 
+0

Спасибо, что должен это сделать, но, как отмечает Грэм, это перемещено в grails 1.3 см. Https://cvs.codehaus.org/browse/GRAILS-3875?focusedCommentId=200866&page=com.atlassian.jira.plugin.system.issuetabpanels % 3Acomment-tabpanel # action_200866 – skurt

+0

Вы, безусловно, правы! См. Http://www.grails.org/1.3-RC2+Release+Notes и раздел, и кажется, что он не реализован ни в 1.3 (тогда как проблема разрешения равна фиксированной, а Graeme комментирует, что код был изменен). Поэтому я думаю, что вам нужно попробовать :-) (Пожалуйста, сообщите нам о результатах) – fabien7474

+0

count ("a", 'myCount') – 2016-02-22 13:02:44