2013-08-19 48 views
1

有沒有方法可以指定namedquery中的列表是不區分大小寫的?我認爲,在Grails 2.2之前,這是默認的,但與Grails 2.2.3不工作...在使用MongoDB的Grails中的命名查詢的列表方法中排序不區分大小寫

這是我的代碼行,使命名查詢的調用,並嘗試列出排序的情況下不敏感的方式。

BackendUser.filter(company,filter).list(max:max,offset:offset,"sort":sortName,order:order,ignoreCase:true) 

正如你所看到的,我已經嘗試添加ignoreCase:true選項,但它不工作。而且我無法在指定查詢中添加排序,因爲我在需要不同排序選項的其他地方使用它。

萬一它的需要,這是命名查詢

static namedQueries = { 
    filter {company,filter-> 
     eq 'company',company 
     if (filter.firstName){ 
      ilike 'firstName',"%${filter.firstName}%" 
     } 
     if (filter.lastName){ 
      ilike 'lastName',"%${filter.lastName}%" 
     } 
     if (filter.email){ 
      ilike 'email',"%${filter.email}%" 
     } 
    } 
} 

編輯:對不起,我忘了提,我使用MongoDB的,我認爲這是一個誰是造成問題

+0

ilike確實是一個不區分大小寫。您可以啓用sql的日誌以查看Hibernate應該使用'lower()'輸出查詢。 –

+0

我的意思是排序,而不是過濾本身。 ilike工作正常,問題出在例如用'AAA'。'aaa''BBB'進行分類時。它命令:'AAA','BBB','aaa'而不是'AAA','aaa','BBB' – Eylen

+0

嗨@Eylen你是如何解決你的問題的?我需要達到相同的目的,我不想把排序內命名的查詢,但內命名查詢的列表方法。 –

回答

0

展望here,看來你可以這樣做:

//pass dir to your named query 
order(new Order(param, dir=='asc').ignoreCase()) 
+0

我不希望在命名查詢中添加排序,只是在列表方法中添加排序,因爲我在其他位置使用具有不同排序需求的此命名查詢 – Eylen

+0

要處理不同的排序,只需將它作爲參數傳遞給namedQuery並處理它。 –

+0

應該更改很多代碼... – Eylen

相關問題