【问题标题】:Get first element in Grails list获取 Grails 列表中的第一个元素
【发布时间】:2011-04-01 03:45:02
【问题描述】:

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

我不喜欢用这个:

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

因为它会占用大量内存资源。 非常感谢!

【问题讨论】:

    标签: list grails select


    【解决方案1】:

    一种快速的方法是将 max 参数与list 一起使用

    Domain.list([max:1])
    

    或者您可以使用我相信的条件查询:

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

    【讨论】:

    • 也许试试 .get{ maxResults(1) ... },不带 [0]?
    • 这不是给你一个包含一个项目的列表,而不是单个项目本身吗?
    • 返回项目,而不是列表
    • 抱歉,我看错了你的评论,还以为你还在用list :-/
    • 如果您在条件查询中粘贴uniqueResult = true,它将返回对象或 null 而不是列表。如果匹配多个对象,则会引发异常。
    【解决方案2】:

    截至Grails 2.1.1first()last() 已添加方法。

    def firstResult = Domain.first()
    

    def lastResult = Domain.last()
    

    【讨论】:

      【解决方案3】:

      另一种方法是使用find,它返回第一个结果,如果表为空,则返回 null。

      User.find("from User")
      

      如果你想要多个,你也可以使用findAll和一个max参数

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

      如果您真的只想要表中的任何对象,那么list 可能是您最好的选择,但大多数时候,对于这些类型的查询,您希望对其进行更多限制并使用 HQL可以很容易地做到这一点。

      【讨论】:

        猜你喜欢
        • 2016-12-31
        • 2020-07-31
        • 2019-04-19
        • 1970-01-01
        • 2019-05-20
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多