在Hibernate HQL和Criteria查询中分组(ORA-00979:不是GROUP BY表达式)

时间:2013-07-07 14:29:55

标签: java hibernate hql hibernate-criteria

我是hibernate和Java的新手,所以如果这些是荒谬的问题,我很抱歉。

我不明白为什么以下查询给出错误“ORA-00979:不是GROUP BY表达式”。

    Query q = session.createQuery (
                "select new tdata.Summary(tbForm.rYear, SUM(tbForm.pWaste)) " 
              + "from TrForm tbForm "
              + "left join fetch tbForm.indKey "        
              + "where tbForm.indKey.grpCode='999' " 
              + "group by tbForm.rYear "  );      

此错误的可能原因似乎不适用于我的查询,因为我包括按功能SUM分组,并且我在select中没有任何不在group by中的表达式。

我还尝试编写一个条件查询来执行我需要的操作,但我也无法使用它。在条件版本中,我对如何为获取的数据添加限制以及如何将数据添加到Summary对象感到困惑。

Criteria criteria = session.createCriteria(TrForm.class)
                          .setFetchMode("DimInd",FetchMode.JOIN) 
                          .add(Restrictions.eq("indKey.indCode", "999")) 
                          .setProjection(Projections.projectionList()
                                    .add(Projections.groupProperty("rYear"))
                                    .add(Projections.sum("pWaste")));
summaryList = (List<Summary>) criteria.list();

非常感谢任何帮助。 谢谢!


更新: 非常感谢!我删除了“left join fetch tbForm.indKey”并且HQL版本工作了!

广义查询

select R_YEAR, sum(P_WASTE) 
from TR_FORM tbForm 
left join DIM_IND ind 
on tbForm.IND_KEY = ind.IND_KEY 
where ind.GRP_CODE='999' 
group by tbForm.R_YEAR

tdata是我拥有数据模型的java代码的文件夹。

0 个答案:

没有答案