我有以下sql查询,我正试图将其转换为hibernate查找:
select column_1, column_2, count(*)
from data_table
group by column_1, column_2
order by column_1, column_2
;到目前为止,这是我拥有的代码:
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列映射到模型对象中的瞬态属性。实现这一点的好方法是什么?
谢谢
发布于 2014-07-19 01:19:17
我使用下面的代码实现了我想要的东西:
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是我添加到模型对象中的临时属性
https://stackoverflow.com/questions/24812147
复制相似问题