我是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代码的文件夹。