2

假设我希望搜索一个 grails 域对象,并且参数值位于名称与对象的属性名称匹配的局部变量中:

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

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

4

2 回答 2

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

于 2013-05-14T18:12:56.617 回答
0

delegate我相信您可以按如下方式使用隐式变量:

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

编辑:根据规范/测试用例,这不是必需的,但我发现明确使用delegate更容易阅读/理解。

于 2013-05-14T18:10:56.103 回答