2011-10-14 233 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替換。我沒有測試過上述內容,所以它可能充滿了錯誤,但希望能證明有一定的幫助。