0

好吧,伙计们,我终于坚持面对这个问题的 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'
    }
}

我在这里需要的是可能在这个域上搜索/过滤

colA1, colA2, colA3, colB1,colB2

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

colA1, colA2,colA3

根据相关请求,对于分页,我需要获取:

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

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

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

    // ... Restrictions on MyView properties
})

你会有一些技巧来计算相关结果吗?我看到了 Hibernate-criteria API 的许多限制,我没有想法,所以我非常感谢你的帮助!:-)

4

1 回答 1

0

好的,所以我终于弄清楚了我的问题,简短的回答是:我不能。

事实是我都需要对我的结果进行分组并计算它们。尽管在性能方面很糟糕,但这必须通过将“组”请求包装为select count(*).

但这是hibernate所说的文档:

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

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

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

于 2013-05-06T11:54:31.717 回答