gpt4 book ai didi

grails - Grails:按属性查找域类

转载 作者:行者123 更新时间:2023-12-02 15:00:22 25 4
gpt4 key购买 nike

我对Grails / groovy并不陌生,正在寻找一种编写代码的优化方法。

域类:

class Visitors {
int ID;
String destination;
String status; // Status can be OK, FAIL, DONE, REDO, NEW, LAST, FIRST
.........
..........
}

现在在 Controller 中:
class VisitorsController {

def getVisitors() {
Visitors.findAllByStatus().each { } // This is where i have confusion
}
}

在上面的注释行中,我想获取所有 的Visitor对象具有 status = OK ,然后遍历循环并在那里更新 status = REDO

状态在另一类中定义:
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 - Grails:按属性查找域类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28305294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com