我正在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数据库中运行良好但是当我将Dialect更改为Oracle10g时,似乎没有使用p中的所有字段来创建group by子句(根据Oracle的要求),从而产生“ORA-00979:不是一个组通过表达“。我知道通过更改Dialect 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语法(即order by decode(e.idEntity, ...)
)?