Grails 如何做';其中';对具有匹配局部变量名称的GORM对象的查询
假设我希望搜索grails域对象,并且参数值位于名称与对象属性名称匹配的局部变量中:Grails 如何做';其中';对具有匹配局部变量名称的GORM对象的查询,grails,gorm,Grails,Gorm,假设我希望搜索grails域对象,并且参数值位于名称与对象属性名称匹配的局部变量中: def getPerson(String firstName, String lastName) { Person person = Person.where { firstName == firstName lastName == lastName } } 如何编写查询,以便找到属性与局部变量值匹配的人员?我相信您可以使用隐式委托变量,如下所示: def ge
def getPerson(String firstName, String lastName) {
Person person = Person.where {
firstName == firstName
lastName == lastName
}
}
如何编写查询,以便找到属性与局部变量值匹配的人员?我相信您可以使用隐式
委托
变量,如下所示:
def getPerson(String firstName, String lastName) {
Person person = Person.where {
delegate.firstName == firstName
delegate.lastName == lastName
}
}
编辑:根据,这不是必需的,但我发现明确使用
委托
更容易阅读/理解。如果我是你,我会避免命名方法参数,例如我的类属性。
然后,您的GORM查询可能如下所示:
def getPerson(String firstName, String lastName) {
def query = Person.where {
(firstName == p_firstName) && (lastName == p_lastName)
}
def results = query.list();
}
您可以在此处查看:是否有错误?我用Grails 2.2.2进行了测试,效果很好。不能使用delegate.firstName=xx——这将失败,错误为multipleComplationErrorSexception无法查询属性“delegate”