LIKE的Grails中的HQL查询

时间:2011-10-14 17:56:37

标签: sql grails hql

我想知道HQL是否可以处理如下的查询

“在column1或column2或Table1中找到值LIKE”abc“或”def“或...”

所以我有多个参数,我想搜索任意参数值的两列通配符。

我正在做grails,如果更喜欢使用executeQuery函数,但不知道怎么写这个。

2 个答案:

答案 0 :(得分:1)

您可以将HQL Expressions中的任何一个应用于您的查询。例如:

from Table1 where column1 like :param1 or column2 like :param2

但是,您必须在参数本身中应用%运算符。


您还可以使用GORM criteria builder与Hibernate criterion restrictions执行查询:

Table1.withCriteria {
    like('column1', param1)
    or {
        like('column2', param2)
    }     
}

答案 1 :(得分:1)

我建议改为使用条件查询:

def criteria = Table1.createCriteria()

def results = criteria.listDistinct {
    or {
        or {
            like('column1', "%abc%")
            like('column1', "%def%")
        }

        or {
            like('column2', "%abc%")
            like('column2', "%def%")
        }
    }
}

如果您不想排除重复项,请将listDistinct替换为list。我没有对上面的内容进行过测试,所以可能会出现错误,但希望这会有所帮助。