2011-10-14 194 views
0

我想知道,如果HQL可以处理查询,如下面的HQL查询LIKE

“找到像值‘ABC’或‘DEF’或者......在任一列1列2或表1或“

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

我做的Grails,如果最好想用的executeQuery功能,但不知道该怎么写一个。

回答

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

我推荐使用条件查询代替:

def criteria = Table1.createCriteria() 

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

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

如果你不这样做想排除重复项用list替换。我没有测试过上述内容,所以它可能充满了错误,但希望能证明有一定的帮助。