我有以下Hibernate HQL查询:
select t from Term t join ApprovedCourse ap on t.id = ap.term.id group by t order by t desc
使用
失败ORA-00979: not a GROUP BY expression
错误,因为Oracle坚持所有选择值都在分组依据中。当然,Hibernate正在向我们隐藏Term对象的各个字段,让我们将其作为Term而不是Term.id处理。 (顺便说一下,此查询在Postgres上有效。Postgres在按要求分组方面更为自由。)
Hibernate产生以下SQL:
select term0_.id as id1_12_, term0_.semester_id as semester_id2_12_, term0_.year_id as year_id3_12_
from term term0_
inner join approved_course approvedco1_
on (term0_.id=approvedco1_.term_id)
group by term0_.id
order by term0_.id desc
我尝试仅从查询开始时删除select t
,但是Hibernate假定我同时选择了Term和ApprovedCourse对象,这会使情况变得更糟。
那么我该如何以休眠方式进行这项工作?
答案 0 :(得分:0)
我发现我可以通过在select子句中用一个替换符替换group by子句来得到想要的东西。这是结果查询:
select distinct(t) from Term t join ApprovedCourse ap on t.id = ap.term.id order by t desc