Grails groovy查询是用“查询”生成的;和';而不是",;或;

Grails groovy查询是用“查询”生成的;和';而不是",;或;,grails,gorm,criteria,Grails,Gorm,Criteria,我正在尝试运行一个查询,以查找基于3个带“或”条件的字段的条目。这是我的疑问: def results = Person.createCriteria().list(params) { eq "skillset.id", original.skillset.id or { eq "primarySkill.id", original.primarySkill.id } or { eq "jobRole.id", original.jobRole.i

我正在尝试运行一个查询,以查找基于3个带“或”条件的字段的条目。这是我的疑问:

def results = Person.createCriteria().list(params) {
        eq "skillset.id", original.skillset.id
        or { eq "primarySkill.id", original.primarySkill.id }
        or { eq "jobRole.id", original.jobRole.id }
        not { eq "id", original.id }
        order "name", "asc"
    }
在person对象中,我关心的3个字段:skillset、primarySkill和jobRole是另一个对象的实例。我想找到任何与这些字段匹配的人,除了原始人。但是,hibernate查询似乎在进行“and”查询,而不是“or”查询。我可以自己输入SQL,但我想学习如何用groovy的方式来实现

这是hibernate生成的查询

select this_.id as id5_0_, 
this_.version as version5_0_, 
this_.account_id as account3_5_0_, 
this_.band as band5_0_, t
his_.end_date as end5_5_0_, 
this_.job_role_id as job6_5_0_, 
this_.name as name5_0_, 
this_.primary_skill_id as primary8_5_0_, 
this_.professional_market_place as professi9_5_0_, 
this_.project_delivery_manager_id as project10_5_0_, 
this_.project_manager_id as project11_5_0_, 
this_.project_name as project12_5_0_, 
this_.rate as rate5_0_, 
this_.resource_deployment_manager_id as resource14_5_0_, 
this_.skillset_id as skillset15_5_0_, 
this_.start_date as start16_5_0_, 
this_.work_location as work17_5_0_ 
from person this_ where this_.skillset_id=? 
and (this_.primary_skill_id=?) 
and (this_.job_role_id=?) 
order by this_.name asc limit ?
我认为应该是这样

def results = Person.createCriteria().list(params) {
    or {
        eq "skillset.id", original.skillset.id
        eq "primarySkill.id", original.primarySkill.id
        eq "jobRole.id", original.jobRole.id
    }
    not { eq "id", original.id }
    order "name", "asc"
}
我认为应该是这样

def results = Person.createCriteria().list(params) {
    or {
        eq "skillset.id", original.skillset.id
        eq "primarySkill.id", original.primarySkill.id
        eq "jobRole.id", original.jobRole.id
    }
    not { eq "id", original.id }
    order "name", "asc"
}
我认为应该是这样

def results = Person.createCriteria().list(params) {
    or {
        eq "skillset.id", original.skillset.id
        eq "primarySkill.id", original.primarySkill.id
        eq "jobRole.id", original.jobRole.id
    }
    not { eq "id", original.id }
    order "name", "asc"
}
我认为应该是这样

def results = Person.createCriteria().list(params) {
    or {
        eq "skillset.id", original.skillset.id
        eq "primarySkill.id", original.primarySkill.id
        eq "jobRole.id", original.jobRole.id
    }
    not { eq "id", original.id }
    order "name", "asc"
}