2013-07-20 45 views
1

我有一個域對象調用請求,有一個狀態ENUM與下面的查詢值GRAILS GORM顯示錯誤的結果,同時與枚舉類型

Request { 
    Status status 
} 

enum Status{ 
    Processed('processed') 
    Rejected('rejected') 
    InProgress('progress') 

    String name 
    Status(name){ 
     this.name=name 
    } 
} 

當我查詢的請求對象Request.findByStatus(Status.Processed)我找回所有的記錄包括狀態被拒絕和進度的記錄。有人可以告訴我究竟發生了什麼問題,或者我需要修復這些問題。我也試過用以下標準查詢

Request.createCriteria().list { 
    eq('status',Status.Processed) 
} 

但是它仍然給我所有的記錄。任何指針?

+0

打開SQL日誌,看看正在發生什麼 –

回答

1

一般來說Enums是大寫的(以避免與普通String實現混淆)。它應該按預期工作,如果設置是這樣的:

enum Status{ 
    PROCESSED('processed') 
    REJECTED('rejected') 
    INPROGRESS('progress') 

    private final String name 

    Status(name){this.name=name} 
    String value(){name} 
} 

[new Request(status: Status.INPROGRESS), 
new Request(status: Status.REJECTED), 
new Request(status: Status.PROCESSED)]*.save() 

assert Request.findByStatus(Status.REJECTED) instanceof Request 
assert Request.findByStatus(Status.REJECTED).status == Status.REJECTED 
assert Request.findByStatus(Status.REJECTED).status.value==Status.REJECTED.value 
+0

我曾試圖同,但沒有運氣還是我不斷收到的所有記錄,當我做Request.findByStatus( Status.REJECTED) –