2013-04-27 63 views
0

中如何使用“分组方式,”用Grails的标准如果我有三个域类是这样的:三个表

class Candidate { 
    static belongsto=[application:Application] 

} 


class Vote { 
    String name; 
static belongsto=[application:Application] 

} 

class Application { 


    Date datedemand; 
    Candidate candidates; 
    Vote votes 
    static hasMany = [candidates:Candidate,votes:Vote] 

} 

我想要检索通过投票的名称分组的所有候选人。

我开始下面的尝试,我仍然受阻:

def criteria = Application.createCriteria() 
def results = criteria.list { 
    votes { 

    } 
    candidates{ 


    } 

} 
+0

[see here](http://stackoverflow.com/questions/5598436/grails-createcriteria-group-by) – havenchyk 2013-04-27 10:32:21

+0

谢谢。但是,这没有用。 – 2013-04-27 11:17:29

回答

0

在体面的Grails(2.X +),你可以尝试类似的东西:

Application.withCriteria { 
    createAlias("votes", votes) 
    projections { 
     groupProperty("votes.name") 
    } 
} 
+0

我不认为这是有效的。首先,'votes.name'无效。 'name'是'vote'的属性,而不是'votes'。其次,他需要“按投票人姓名分组的所有**候选人”。 – dmahapatro 2013-04-28 00:22:52

0

在这种情况下我会去一个简单的香草HQL而不是标准,像这样或更多(使用join您需要的方式):

String hql = "Select V.name, C.name " + 
      "from Candidate C, Vote V " + 
      "where C.application = V.application " + 
      "group by V.name, C.name" 

Query query = session.createQuery(hql) 
List results = query.list()