grails-findAll-findAllWhere不一致性

grails-findAll-findAllWhere不一致性,grails,groovy,gorm,grails-2.3,Grails,Groovy,Gorm,Grails 2.3,给定一个Grails域 class Person { String name int age } 我可以执行这个查询 Person.findAll { age >= 25 } 但是当我执行这个查询时,它不做任何过滤 def query = { age >= 25 } Person.findAll query 在将闭包作为参数传递之前,我尝试了克隆,或者将该闭包的所有者和委托置零,但仍然没有成功 另外,在org/grails/datastore/gorm/I中

给定一个Grails域

class Person {
     String name
     int age
}
我可以执行这个查询

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

def query = { age >= 25 }
Person.findAll query
在将闭包作为参数传递之前,我尝试了克隆,或者将该闭包的所有者和委托置零,但仍然没有成功

另外,在org/grails/datastore/gorm/I中查看GormStaticApi的源代码也应该能够执行以下操作

Person.findAllWhere ([age: 25], [max: 10, offset:5])
但即使这样,它也能起作用

Person.findAllWhere ([age: 25]) works

谁都知道这是为什么。我使用的是
Grails2.3.9
文档中说:

请注意,不能将定义为变量的闭包传递到 方法,除非已显式转换为DetachedCriteria 实例

如果您显式强制转换它,它应该可以工作:

def query = { age >= 25 } as DetachedCriteria
Person.findAll query
尽管您希望创建一个可重用的DetachedCriteria,但最好执行以下操作:

def query = Person.where { age >= 25}
然后你可以做如下事情:

query.list()
query.findAllBySomethingElse()
query.findAll { somethingelse == foo }

文件说:

请注意,不能将定义为变量的闭包传递到 方法,除非已显式转换为DetachedCriteria 实例

如果您显式强制转换它,它应该可以工作:

def query = { age >= 25 } as DetachedCriteria
Person.findAll query
尽管您希望创建一个可重用的DetachedCriteria,但最好执行以下操作:

def query = Person.where { age >= 25}
然后你可以做如下事情:

query.list()
query.findAllBySomethingElse()
query.findAll { somethingelse == foo }

文件说:

请注意,不能将定义为变量的闭包传递到 方法,除非已显式转换为DetachedCriteria 实例

如果您显式强制转换它,它应该可以工作:

def query = { age >= 25 } as DetachedCriteria
Person.findAll query
尽管您希望创建一个可重用的DetachedCriteria,但最好执行以下操作:

def query = Person.where { age >= 25}
然后你可以做如下事情:

query.list()
query.findAllBySomethingElse()
query.findAll { somethingelse == foo }

文件说:

请注意,不能将定义为变量的闭包传递到 方法,除非已显式转换为DetachedCriteria 实例

如果您显式强制转换它,它应该可以工作:

def query = { age >= 25 } as DetachedCriteria
Person.findAll query
尽管您希望创建一个可重用的DetachedCriteria,但最好执行以下操作:

def query = Person.where { age >= 25}
然后你可以做如下事情:

query.list()
query.findAllBySomethingElse()
query.findAll { somethingelse == foo }

我正在通过rest访问我的数据库,并在评估不同的过滤方式,最后我创建了一个标准的构建器,使用JSON映射作为查询参数,类似于{gt:['age',25]}thx,用于指向文档。我错过了那一行。我正在通过rest访问我的数据库,并在评估执行过滤的不同方式。我最终创建了一个标准生成器,使用JSON映射作为查询参数,类似于{gt:['age',25]}thx,用于指向文档。我错过了那一行。我正在通过rest访问我的数据库,并在评估执行过滤的不同方式。我最终创建了一个标准生成器,使用JSON映射作为查询参数,类似于{gt:['age',25]}thx,用于指向文档。我错过了那一行。我正在通过rest访问我的数据库,并在评估执行过滤的不同方式。我最终创建了一个标准生成器,使用JSON映射作为查询参数,类似于{gt:['age',25]}thx,用于指向文档。我没听到那句话。