首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将sql count聚合函数转换为hibernate标准

将sql count聚合函数转换为hibernate标准
EN

Stack Overflow用户
提问于 2014-07-18 03:40:08
回答 1查看 1.3K关注 0票数 0

我有以下sql查询,我正试图将其转换为hibernate查找:

代码语言:javascript
复制
select column_1, column_2, count(*)
from data_table
group by column_1, column_2
order by column_1, column_2
;

到目前为止,这是我拥有的代码:

代码语言:javascript
复制
 DetachedCriteria detachedCriteria = DetachedCriteria.forClass(table.class);
 detachedCriteria.setProjection(Projections.projectionList()
            .add(Projections.groupProperty("column_1"))
            .add(Projections.groupProperty("column_2"))
            .add(Projections.rowCount()))
        .addOrder(Order.asc("column_1"))
        .addOrder(Order.asc("column_2"));

由于某种原因,我收到以下错误: ORA-00979:不是GROUP BY表达式

这是使用hibernate转换sql查询的正确方式吗?如果没有,什么是更好的方法?

我还试图将返回的count列映射到模型对象中的瞬态属性。实现这一点的好方法是什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-07-19 01:19:17

我使用下面的代码实现了我想要的东西:

代码语言:javascript
复制
     detachedCriteria.setProjection(Projections.projectionList()
            .add(Projections.groupProperty("column_1"))
            .add(Projections.groupProperty("column_2"))
            .add(Projections.sqlProjection( 
                    "count(*) as counter", 
                    new String[] { "counterproperty" }, 
                    new Type[] { Hibernate.LONG } 
                  )))
              .addOrder(Order.asc("column_1"))
              .addOrder(Order.asc("column_2")); 

               detachedCriteria.setResultTransformer(Transformers.aliasToBean(modelObject.class));

counterProperty是我添加到模型对象中的临时属性

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24812147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档