2010-05-06 22 views

Trả lời

2

làm việc trong grails 1.2.1

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

câu trả lời là ví dụ

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

tôi sẽ cố gắng

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

Note này chưa được kiểm tra.

+0

Điều này gần như giải quyết vấn đề, nhưng làm thế nào để tôi đặt hàng bằng cách đếm? – skurt

9

Vì grails 1.2 bạn có thể tạo bí danh và thứ tự của bí danh đã tạo.

Xem https://cvs.codehaus.org/browse/GRAILS-3875https://cvs.codehaus.org/browse/GRAILS-3655 để biết thêm chi tiết.

Áp dụng cho mã riêng của bạn, truy vấn HQL sẽ là:

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

Cảm ơn điều này nên làm điều đó, nhưng như Graeme ghi chú điều này được chuyển đến grails 1.3 xem https://cvs.codehaus.org/browse/GRAILS-3875?focusedCommentId=200866&page=com.atlassian.jira.plugin.system.issuetabpanels % 3Acomment-tabpanel # action_200866 – skurt

+0

Bạn chắc chắn đúng! Xem http://www.grails.org/1.3-RC2+Release+Notes và phần và có vẻ như nó không được thực hiện hoặc trong 1.3 (trong khi vấn đề độ phân giải bằng cố định và Graeme là nhận xét rằng mã đã được thay đổi). Vì vậy, tôi nghĩ rằng bạn cần phải thực hiện một thử :-) (Xin vui lòng giữ cho chúng tôi thông báo về kết quả) – fabien7474

+0

đếm ("a", 'myCount') –

Các vấn đề liên quan