我是 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 " );
此错误的可能原因似乎不适用于我的查询,因为我包含 group by 函数 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 代码的文件夹。