【发布时间】:2014-03-14 02:51:01
【问题描述】:
我一直在尝试将搜索功能添加到我的 grails 项目中,但遇到了一些障碍。
这是我的域类
class Worker{
String name
}
这是我的控制器
package main
class SiteController {
def search()
{
def results = Worker.findAll{
it.name ==~ /.*John.*/
}
[results:results]
}
}
我正在尝试弄清楚如何使用 findAll(closure) 函数,但我在任何地方都找不到示例,我也无法通过测试来找出答案,我只想找到所有工人按照我放在封闭中的测试标准。
编辑 1
我遇到了另一个问题,出于某种原因,每当我在正则表达式中使用任何特殊字符时,例如 [. * ?] 或其中任何一个,我的 findAll 不返回任何内容。如果我有一个叫“John Smith”的工人,我这样做了
name ==~ /John Smith/
它应该可以正常工作,但如果我使用任何这些特殊字符,例如
name ==~ /John.*/
甚至
name ==~ /John S.ith/
它不起作用,这非常令人困惑,并且正则表达式也可以在 findall 函数之外正常工作,如果您能提供一些对此非常有帮助的见解
【问题讨论】:
-
您是否在 Grails 控制台中测试过这个查询?如果我没记错的话,正则表达式取决于您使用的数据库。
-
它不会为我运行,因为它说“Groovy:无法查询属性“它” - 类 main.Worker 上不存在这样的属性。”
-
如果我删除 it,它会运行,但实际上与它应该匹配的不匹配。我的数据库中有一个名为“John Smith”的工人,但没有任何显示
标签: grails grails-orm