如何使用匹配的局部变量名对GORM对象执行“where”查询

时间:2013-05-14 17:55:19

标签: grails gorm

假设我想搜索一个grails域对象,参数值在局部变量中,其名称与对象的属性名称匹配:

def getPerson(String firstName, String lastName) {
    Person person = Person.where {
        firstName == firstName
        lastName == lastName
    }
}

如何编写查询以便找到属性与局部变量值匹配的人?

2 个答案:

答案 0 :(得分:0)

我相信您可以使用隐式delegate变量,如下所示:

def getPerson(String firstName, String lastName) {
    Person person = Person.where {
        delegate.firstName == firstName
        delegate.lastName == lastName
    }
}

修改:根据spec / test case,这不是必需的,但我发现明确使用delegate更容易阅读/理解。

答案 1 :(得分:0)

如果我是你,我会避免命名我的方法参数,例如我的类属性。 然后您的GORM查询可能如下所示:

def getPerson(String firstName, String lastName) {
    def query = Person.where {
        (firstName == p_firstName) && (lastName == p_lastName)
    }
    def results = query.list();
} 

您可以在此处查看:http://www.grails.org/doc/latest/guide/GORM.html#whereQueries