1

我有一个名为 Request 的域对象,它的状态 ENUM 具有以下值

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)
}

但它仍然给了我所有的记录。任何指针?

4

1 回答 1

1

通常枚举是大写的(以避免与普通字符串实现混淆)。如果设置如下所示,它应该可以按预期工作:

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 回答