Hibernate + Oracle Group By在ORA-00979中的结果:不是GROUP BY表达式错误

时间:2019-07-16 21:48:53

标签: oracle hibernate group-by

我有以下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对象,这会使情况变得更糟。

那么我该如何以休眠方式进行这项工作?

1 个答案:

答案 0 :(得分:0)

我发现我可以通过在select子句中用一个替换符替换group by子句来得到想要的东西。这是结果查询:

select distinct(t) from Term t join ApprovedCourse ap on t.id = ap.term.id  order by t desc