1

以下の値を持つ Status ENUM を持つ Request というドメイン オブジェクトがあります。

Request {
  Status status
}

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

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

Request オブジェクトをクエリするRequest.findByStatus(Status.Processed)と、ステータスが拒否され、進行中のものを含むすべてのレコードが返されます。誰かが正確に何が間違っているのか、または何を修正する必要があるのか​​ を教えてもらえますか. 以下のような基準でクエリも試しました

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

それでも、すべてのレコードが表示されます。ポインターはありますか??

4

1 に答える 1

1

通常、Enum は大文字で表記されます (通常の 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
于 2013-07-20T05:11:19.833 に答える