尝试使用find all简单地运行域对象的查询,但它没有像我期望的那样运行:
searchResults = Contact.findAll("from Contact as c where c.company=${params.company.id} and c.firstName = '%${nameSearch}%' or c.lastName = '%${nameSearch}%' ")
Run Code Online (Sandbox Code Playgroud)
我想找到公司中所有人的名字或姓氏与输入的搜索类似(params.search存储在nameSearch变量中).如果我将第一个或最后一个值更改为特定名称"Tim"或"Johnson",则可行.
我对变量或"喜欢"引用做错了什么?我认为%符号基本上是搜索条件中的*符号?
我尝试过2.0.0搜索形式:
searchResults = Contact.findAll{
company == params.company.id
firstName == '%' + nameSearch + '%'
lastName == '%' + nameSearch + '%'
}
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.谢谢你的帮助
尝试一下:
def company = Company.get(params.company.id)
def searchResults = Contact.withCriteria {
eq('company', company)
or {
ilike('firstName', '%' + nameSearch + '%')
ilike('lastName', '%' + nameSearch + '%')
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不想检索Company实例,则可以idEq()在company { }块中使用.
您的HQL尝试错误的一些事情(可能更多):
company条件是将object(c.company)与id值(params.company.id)进行比较(company AND (first OR last))代替(company AND first OR last)like而不是=,例如firstName like '%something%'作为安全问题,您确实不应该使用内联值构建HQL语句.您应该使用命名参数.查看findAll文档中的一些中间示例.
| 归档时间: |
|
| 查看次数: |
7521 次 |
| 最近记录: |