我有以下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列映射到模型对象中的transient属性。实现这一目标的好方法是什么?
由于
答案 0 :(得分:0)
我能够使用以下代码实现我想要的东西:
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是我添加到模型对象的瞬态属性