grails - grails namedQueries如何使用OR

标签 grails named-query

本质上,我有3个字段要检查:

class Book {
   String title
   String ISBN
   String type
}

我正在尝试使用命名查询基于单个搜索字符串对这3个字段中的每个字段进行不区分大小写的搜索。这是我目前拥有的:
    static namedQueries = {

        search { String searchString ->
        ilike("title", searchString) 
        or {
           ilike("ISBN", searchString)
        }
        or { 
           ilike("type", searchString)
        }
    }

我没有任何异常或任何异常,但是,当应该有异常时,它只是不返回任何结果。有任何想法吗?

编辑:

我更新为doelleri的示例,并且现在可以正常工作。这是查询的最后一部分:
from book this_ where (lower(this_.title) like ? or lower(this_.isbn) like ? or lower(this_.type) like ?)

我还在命名查询中做了一个断点,以确定是否传入了字符串,确实如此。

最佳答案

我相信正确的语法是

static namedQueries = {
    search { String searchString ->
        or {
            ilike("title", searchString)
            ilike("ISBN", searchString)
            ilike("type", searchString)
        }
    }
}

关于grails - grails namedQueries如何使用OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12482986/

相关文章:

java - JPA @NamedQuery 有两个表,可能吗?

java - JPA 调用 MSSQL 存储过程返回重复记录

Grails 命名查询不适用于 "in"语句

java - 使用 Java Webstart 的 Grails 独立应用程序失败并出现 ClassNotFoundException : FilterDef

grails - 使用 grails 动态查找器时出现 org.springframework.dao.InvalidDataAccessApiUsageException

grails - 如何将字体 .ttf 文件添加到 grails 项目

grails - 禁用 Grails Spring Security 插件

mysql - 反向子句 IN 命名查询 Hibernate

grails - 在具有域继承的Grails GORM中,是否可以通过查询父类(super class)来找到特定的子类实例

security - Grails Spring Security LDAP插件:使用LDAP进行身份验证,但仅允许存储在数据库中的用户登录