Grails标准:如何计算分组子查询的结果?

时间:2013-04-29 10:18:01

标签: oracle grails gorm hibernate-criteria

好的,我终于坚持使用面向此问题的GORM Criteria API实现:

我有一个像这样映射的Oracle视图:

class MyView implements Serializable {
    Long idA
    Long idB
    Long colA1
    String colA2
    String colA3
    String colB1
    String colB2

    static mapping = {
        id composite: ['idA', 'idB'], generator: 'assigned'
    }
}

我需要的是在

上搜索/过滤此域名

colA1colA2colA3colB1colB2

但我需要有效地获取不同的/分组的结果集:

colA1colA2colA3

在相关请求上,对于分页,我需要获取:

  • 获取值的计数
  • 过滤结果的已定义部分

问题在于结合计数和分组。如果我建立这样的请求:

MyView.withCriteria({
    projections {
        groupProperty('colA1')
        groupProperty('colA2')
        groupProperty('colA3')
    }

    // ... Restrictions on MyView properties
})

您是否有一些技巧可以计算相关结果?我看到了Hibernate-criteria API的许多限制,而且我没有想法,所以我将非常感谢您的帮助! : - )

1 个答案:

答案 0 :(得分:0)

好的,所以我终于找到了我的问题而简短的回答是:我做不到。

事实是,我都需要对结果进行分组并计算这些结果。虽然在性能方面很糟糕,但必须通过select count(*)包装“组”请求来完成。

但这是hibernate says文档:

  

请注意,HQL子查询只能在select或where中出现   条款。

所以我需要的是不能使用hibernate

我通过更重的变化解决了我的问题,这意味着基于物化视图的更好的模型化,以避免灾难性的性能问题。