【问题标题】:Sort by association count in Grails在 Grails 中按关联计数排序
【发布时间】:2010-04-06 07:11:05
【问题描述】:

我有很多主题对象,每个主题都有很多帖子:发布 如何根据帖子数对所有主题对象进行排序??

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    您可以使用 size() 函数在一个 HQL 查询中执行此操作。这样您就可以在一个查询中获取主题实例:

    SELECT topic
    FROM Topic topic
    ORDER BY size(topic.posts)
    

    我在 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html 上找到了这个,第 14.16 节提示和技巧。

    【讨论】:

      【解决方案2】:

      您可以这样做,但它需要两个查询。这是因为要按集合的大小排序,您需要使用“分组依据”,但这需要您枚举所有主题属性。如果您添加或删除一个查询将中断。所以解决方案是运行一个查询来查找有序 id,然后运行第二个查询来获取这些 id 的实例:

      String hql = '''
      SELECT t.id
      FROM Topic t LEFT JOIN t.posts AS post
      GROUP BY t.id
      ORDER BY COUNT(post) DESC
      '''
      def ids = Topic.executeQuery(hql)
      def orderedTopics = Topic.getAll(ids)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        • 1970-01-01
        相关资源
        最近更新 更多