2013-04-09 72 views
0

所以我嘗試做一個搜索功能。我使用Hibernates創建標準來嘗試完成它。我正在搜索2個值。如果其中一個值爲null,那麼它將拋出異常,如果不是,它將繼續在表中顯示關於該搜索的所有信息。Hibernate的創建標準

def search(params) { 

def r = User.createCriteria() 

if (params.searchUsername != 'Enter a Username' && params.searchMPI != 'Enter a User Number') { 
    def number = params.searchNumber 
    def username = params.searchUsername 

    r = User.createCriteria() 


    def userList = r.list(max: params.max, offset: params.usersOffset) { 
     and { 
      ilike('username', '%' + username + '%') 
      ilike('number', '%' + number + '%') 
     } 
     order(params.usersSort, params.usersOrder) 
    } 
} 

這是我迄今爲止的搜索功能。它搜索用戶名和用戶號碼。幾乎沒有什麼必須是與用戶號碼關聯的用戶名。如果其中一個出現爲空,那麼它將需要對我說,告訴我一個是空的。我一直在看這裏的createCriteria信息http://grails.org/doc/2.2.x/ref/Domain%20Classes/createCriteria.html。它作爲一個NULL方法。看起來,這只是搜索值爲null。有沒有一種方法可以將其實施到我的搜索中?

if ((ilike('username', '%'+ username) || ilike('number', '%' + number)) == (isNull('username') || isNull('number')){ 
     system.out.println("ONE OF THE VALUES IS NULL!") 

我想認爲這會像這樣工作。 ^不過它沒有

我很新的這一切。因此,有建設性的批評表示讚賞= d

回答

0

爲什麼你提交這些字符串作爲PARAMS?你有意這麼做嗎?而且,你確定這是一個AND條件?

它作爲一種如果NULL方法。看起來,這只是搜索值爲null。有沒有一種方法可以將其實施到我的搜索中?

你能改寫這個? (我不明白你正在嘗試做的?)

+0

對不起,我的意思是。 Hibernate有一個isNull()方法。這種方法看起來像我可以使用,但我認爲它只是查找值爲null。 (但我不知道如果我完全理解它)。這個搜索是否爲一個填充表。 非常多。我需要做的是檢查這個從數據庫填充的表格。該表格需要通過用戶名和用戶號碼進行搜索。有兩個搜索框,人員搜索將不得不放在用戶名和號碼。如果由於某種原因,其中一個參數在數據庫中顯示爲空,則需要大聲說出。 – CoffeePeddlerIntern 2013-04-09 15:20:15

+0

我認爲你需要一個'或'條件,而不是'和'的標準 – DAJ 2013-04-12 21:45:55