gpt4 book ai didi

grails findAll findAllWhere 不一致

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

给定一个 Grails 域

class Person {
String name
int age
}

我可以执行那个查询
Person.findAll { age >= 25 }

但是当我执行这个查询时它不做任何过滤
def query = { age >= 25 }
Person.findAll query

在将其作为参数传递之前,我尝试克隆或使该闭包的所有者和代表归零,但仍然不走运

还要查看 org/grails/datastore/gorm/中的 GormStaticApi 的来源,我也应该能够执行以下操作
Person.findAllWhere ([age: 25], [max: 10, offset:5])

但它确实有效
Person.findAllWhere ([age: 25]) works

任何人都知道为什么会这样。我正在使用 Grails 2.3.9

最佳答案

文档说:

Note that you cannot pass a closure defined as a variable into the where method unless it has been explicitly cast to a DetachedCriteria instance



如果您明确地转换它,它应该可以工作:
def query = { age >= 25 } as DetachedCriteria
Person.findAll query

尽管您想创建一个可重用的 DetachedCriteria,但最好这样做:
def query = Person.where { age >= 25}

然后您可以执行以下操作:
query.list()
query.findAllBySomethingElse()
query.findAll { somethingelse == foo }

关于grails findAll findAllWhere 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214110/

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