我想知道HQL是否可以处理如下的查询
“在column1或column2或Table1中找到值LIKE”abc“或”def“或...”
所以我有多个参数,我想搜索任意参数值的两列通配符。
我正在做grails,如果更喜欢使用executeQuery函数,但不知道怎么写这个。
答案 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
。我没有对上面的内容进行过测试,所以可能会出现错误,但希望这会有所帮助。