获取Grails列表中的第一个元素
问题描述:
如何从命令.list()返回对象返回的Grails列表中的第一个元素,但不使用Java方法。我的意思是,我们有没有选择在调用.list()时选择顶层元素,类似于SQL查询SELECT TOP FROM。获取Grails列表中的第一个元素
我不喜欢使用这样的:
List domains = Domain.list()
return domains.get(0)
Becayse它会导致内存资源这么多。 非常感谢!
答
一个快速的方法是使用最大参数与list
Domain.list([max:1])
或者你可以使用一个标准的查询,我相信:
def domainCriteria = Domain.createCriteria()
def firstDomain = domainCriteria.list{
maxResults(1)
order('id', 'asc')
}[0]
答
另一种方式来做到这一点是与find
,它返回第一个结果,如果表为空,则返回null。
User.find("from User")
如果你想不止一个,你也可以使用findAll
具有最大参数
User.findAll("from User", [max: 10])
如果你真的想刚刚从表中的任何对象,然后list
可能是你最好的选择,但在大多数情况下,通过这些查询,您希望将其限制得多一点,并且使用HQL可以非常简单。
答
截至Grails 2.1.1,first()
和last()
方法已被添加。
def firstResult = Domain.first()
和
def lastResult = Domain.last()
也许尝试。获得{的maxResults(1)...},而不[0]? – koddo 2011-04-01 09:21:37
这不会让你的列表包含一个项目,而不是单个项目本身? – 2011-04-01 10:57:22
它返回的项目,而不是一个列表 – koddo 2011-04-01 11:51:31