jpa - 在 JPA 规范的子查询中使用 group by
问题描述
有两种模型:Event
& Session
,它具有一对多的关系。
我想基于这样的 SQL 使用 JPA Criteria API 创建谓词:
SELECT event.* FROM events JOIN (
SELECT event.id, MIN(session.start) AS start FROM
events JOIN sessions ON events.id = sessions.event_id
GROUP BY event.id
) TMP on events.id = TMP.id
WHERE start >= '2018-08-01 00:00:00';
我参考这个链接:http ://www.thejavageek.com/2014/04/28/criteria-group-clause/通过子查询构建组。
但是由于SubQuery
没有multiselect
功能而卡住了,如何通过子查询基于组构建谓词?
解决方案
尝试如下查询,使用函数和子句in
的聚合日期和条件min
having
select event from Event event
and event.session.start in
(select min(nestedEvent.session.start) minDates
FROM Event nestedEvent
group by nestedEvent.id
having minDates >= '2018-08-01 00:00:00')
推荐阅读
- security - 清除 cookie 后是否可能进行 CSRF / 点击劫持?
- cakephp - 如何从控制器中删除照片或使用 cakephp-upload 查看
- sql - UNION 与聚合一起使用时的 SQL 语句错误
- php - 解析错误:语法错误,意外 '::' (T_PAAMAYIM_NEKUDOTAYIM),期待 ')'
- ios - 显示和关闭 AVPlayer 控制器的问题
- javascript - 如何填充在线 Web 表单并从独立应用程序中获取结果?
- swift - Swagger-codegen 创建一个模型,其中参数已被对另一个模型的引用覆盖
- c# - 如何改进 ListViewBase 动画?
- avassetwriter - iOS - AVassetWriter 输出大小为 0 的文件并且不给出错误
- php - PHP,如何使用函数返回数组的新元素