oracle - 在 ORA-00979 中 Hibernate + Oracle Group By 结果:不是 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 对象,这让事情变得更糟。
那么如何以 Hibernate 方式进行这项工作呢?
解决方案
我发现我可以通过在 select 子句中用 distinct 替换 group by 子句来得到我想要的。这是结果查询:
select distinct(t) from Term t join ApprovedCourse ap on t.id = ap.term.id order by t desc
推荐阅读
- c - 在 C 语言中使用 struct Aliasname* 作为函数返回类型
- ios - 我的 iOS SwiftUI 项目不使用 AVAudioPlayer 播放声音
- python - 如何用html文件python selenium替换web-request?
- sql - 如何在句子中获取指定的字符串
- javascript - 无法在页面上呈现数据
- javascript - 如何检查用户输入是否存在于数组中?
- r - 通过 system() 调用 R CMD SHLIB 找不到 GSL 库
- go - 是否可以考虑使用/写入 bufio.Writer?
- memory - 我看不到记忆的内容
- google-apps-script - 通过选择获取非连续的活动范围并以编程方式使用它 Google 脚本