如何从命令.list()返回Grails列表中的第一个元素,但不能使用Java方法。我的意思是,在调用.list()时,我们可以选择顶部元素,类似于SQL查询SELECT TOP FROM。
我不喜欢用这个:
List domains = Domain.list()
return domains.get(0)
这会导致内存资源如此之多。 非常感谢你!
答案 0 :(得分:10)
快速方法是将max参数与list
Domain.list([max:1])
或者您可以使用我认为的Criteria查询:
def domainCriteria = Domain.createCriteria()
def firstDomain = domainCriteria.list{
maxResults( 1 )
order( 'id', 'asc' )
}[0]
答案 1 :(得分:2)
截至Grails 2.1.1,已添加first()
和last()
方法。
def firstResult = Domain.first()
和
def lastResult = Domain.last()
答案 2 :(得分:1)
另一种方法是使用find
返回第一个结果,如果表为空则返回null。
User.find("from User")
如果您想要多个,您还可以将findAll
与最大参数
User.findAll("from User", [max: 10])
如果你真的只想要表格中的任何对象,那么list
可能是你最好的选择,但大多数情况下,通过这些类型的查询,你想要限制它多一点,然后去到HQL可以很容易。