Oracle &引用;ORA-00979:不是一个“按表达式分组”;使用HibernateHQL
我正在Oracle数据库中执行以下HQL查询:Oracle &引用;ORA-00979:不是一个“按表达式分组”;使用HibernateHQL,oracle,hibernate,hql,Oracle,Hibernate,Hql,我正在Oracle数据库中执行以下HQL查询: select p, count(e) from Entity p join p.elementsA l join l.elementsB e group by p order by p.name 这在MySQL数据库中工作得很好,但当我将方言更改为Oracle10g时,似乎并没有使用p中的所有字段来创建GROUPBY子句(如Oracle所要求的),从而生成“ORA-00979:不是GROUPBY表达式”。我理解,通过更改方言,Hiber
select p, count(e)
from Entity p
join p.elementsA l
join l.elementsB e
group by p
order by p.name
这在MySQL数据库中工作得很好,但当我将方言更改为Oracle10g时,似乎并没有使用p中的所有字段来创建GROUPBY子句(如Oracle所要求的),从而生成“ORA-00979:不是GROUPBY表达式”。我理解,通过更改方言,Hibernate应该将此HQL转换为ORacle的有效SQL语句
我错了吗?我使用的是Oracle10g方言
编辑:现在我发现它不能将其他查询转换为Oracle方言。像这个:
select
e
from
Entity e
where
e.idEntity in (
:idList
)
order by
field(e.idEntity ,
:idList)
现在我了解到Oracle不支持按字段排序的语句,但HQL不应该将其正确地转换为Oracle语法(即,
orderbydecode(e.idEntity…)
)?您是否尝试过查看此HQL查询生成的sql代码?您可以在hibernate.cfg.xml文件中使用true
,它生成的SQL与使用MySQL方言时相同。问题是,在我的Oracle环境中,没有提到MySQL方言。这似乎是一个多年来一直没有解决的错误:这很令人惊讶,因为这不是一个罕见的情况。那么解决办法是什么呢?手动指定所有字段?否。这对HQL完全有效。