2011-04-01 113 views
1

如何从命令.list()返回对象返回的Grails列表中的第一个元素,但不使用Java方法。我的意思是,我们有没有选择在调用.list()时选择顶层元素,类似于SQL查询SELECT TOP FROM。获取Grails列表中的第一个元素

我不喜欢使用这样的:

List domains = Domain.list() 
return domains.get(0) 

Becayse它会导致内存资源这么多。 非常感谢!

回答

9

一个快速的方法是使用最大参数与list

Domain.list([max:1]) 

或者你可以使用一个标准的查询,我相信:

def domainCriteria = Domain.createCriteria() 
def firstDomain = domainCriteria.list{ 
    maxResults(1) 
    order('id', 'asc') 
}[0] 
+0

也许尝试。获得{的maxResults(1)...},而不[0]? – koddo 2011-04-01 09:21:37

+0

这不会让你的列表包含一个项目,而不是单个项目本身? – 2011-04-01 10:57:22

+0

它返回的项目,而不是一个列表 – koddo 2011-04-01 11:51:31

1

另一种方式来做到这一点是与find,它返回第一个结果,如果表为空,则返回null。

User.find("from User") 

如果你想不止一个,你也可以使用findAll具有最大参数

User.findAll("from User", [max: 10]) 

如果你真的想刚刚从表中的任何对象,然后list可能是你最好的选择,但在大多数情况下,通过这些查询,您希望将其限制得多一点,并且使用HQL可以非常简单。

相关问题