我有一个名为Request的域对象,其状态ENUM具有以下值
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)
}
但它仍然给了我所有记录。任何指针??
答案 0 :(得分:1)
通常,枚举是大写的(以避免与普通的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