如何从一对多关系中的数组列表中找到

时间:2015-03-30 14:21:36

标签: grails gorm

我有一两个域类,

class Company {
    String name
    static hasMany = [groups:CompanyGroup]
}

class CompanyGroup {
    String name 
    static belongsTo = [company:Company]
}

我从以下代码

收到了CompanyGroup列表
def groupList = CompanyGroup.withCriteria{
    users{
        eq 'id', new Long(user.id)
    }
} 

我想找到哪些公司有这些groupList。我这样试试,

def comList
groupList.each(){ group ->
    def coms = Company.withCriteria{
        eq("groups", group)
    }
    comList.collect{[coms]} 
} 
println 'company : ' + comList

它已经不再适用了。

2 个答案:

答案 0 :(得分:0)

这个hql怎么样

Company.executeQuery("select c from company c join c.groups g join g.users u where u.id = :uid", [uid:xxx])

答案 1 :(得分:0)

您可以使用此GORM查询。

def companyInstanceList = Company.createCriteria().listDistinct{
    groups{
        users{
         eq ('id', user.id.toLong())
        }
    }
}