Grails:通过 属性 查找域 class
Grails : Find domain class by property
我是 Grails/groovy 的新手,正在寻找一种优化的代码编写方式。
域class:
class Visitors {
int ID;
String destination;
String status; // Status can be OK, FAIL, DONE, REDO, NEW, LAST, FIRST
.........
..........
}
现在在控制器中:
class VisitorsController {
def getVisitors() {
Visitors.findAllByStatus().each { } // This is where i have confusion
}
}
在上面的注释行中,我想获取所有 不 具有 status = OK 的 Visitors 对象,然后通过循环并在那里更新 status = REDO.
状态定义在另一个class:
public enum VisitorsStatusEnum { NEW, OK, FAIL, DONE, REDO, LAST, FIRST }
有什么建议吗?
对枚举稍作修改并使用 where
查询而不是 findAllBy
将产生预期结果。
//src/groovy
enum VisitorsStatusEnum {
NEW('NEW'), OK('OK'), FAIL('FAIL'),
DONE('DONE'), REDO('REDO'), LAST('LAST'), FIRST('FIRST')
private final String id
private VisitorsStatusEnum(String _value) {
id = _value
}
String getId() { id }
}
// Domain class
class Visitors {
Integer ID
String destination
VisitorsStatusEnum status
}
//Controller
class VisitorsController {
def getVisitors() {
def query = Visitors.where {
status != VisitorsStatusEnum.OK
}
// Prefer batch update instead
query.updateAll( status: VisitorsStatusEnum.REDO )
render 'Updated'
}
}
我是 Grails/groovy 的新手,正在寻找一种优化的代码编写方式。
域class:
class Visitors {
int ID;
String destination;
String status; // Status can be OK, FAIL, DONE, REDO, NEW, LAST, FIRST
.........
..........
}
现在在控制器中:
class VisitorsController {
def getVisitors() {
Visitors.findAllByStatus().each { } // This is where i have confusion
}
}
在上面的注释行中,我想获取所有 不 具有 status = OK 的 Visitors 对象,然后通过循环并在那里更新 status = REDO.
状态定义在另一个class:
public enum VisitorsStatusEnum { NEW, OK, FAIL, DONE, REDO, LAST, FIRST }
有什么建议吗?
对枚举稍作修改并使用 where
查询而不是 findAllBy
将产生预期结果。
//src/groovy
enum VisitorsStatusEnum {
NEW('NEW'), OK('OK'), FAIL('FAIL'),
DONE('DONE'), REDO('REDO'), LAST('LAST'), FIRST('FIRST')
private final String id
private VisitorsStatusEnum(String _value) {
id = _value
}
String getId() { id }
}
// Domain class
class Visitors {
Integer ID
String destination
VisitorsStatusEnum status
}
//Controller
class VisitorsController {
def getVisitors() {
def query = Visitors.where {
status != VisitorsStatusEnum.OK
}
// Prefer batch update instead
query.updateAll( status: VisitorsStatusEnum.REDO )
render 'Updated'
}
}