在JPA规范中的子查询中使用分组方式

时间:2018-10-21 06:54:54

标签: jpa spring-data-jpa spring-data

有两种模型:EventSession,它们具有一对多的关系。

我想基于这样的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函数而陷入困境,如何通过子查询基于组构建谓词?

1 个答案:

答案 0 :(得分:0)

请尝试以下查询,并使用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')