【问题标题】:JPA Criteria API: join on another queryJPA Criteria API:加入另一个查询
【发布时间】:2015-05-30 13:04:57
【问题描述】:

我正在尝试使用 JPA Criteria API 构建此查询

SELECT s FROM snapshot s
INNER JOIN (
    SELECT collector_id, entity_id, MAX(timestamp) AS "timestamp"
    FROM snapshot GROUP BY collector_id, entity_id
) AS j ON s.TIMESTAMP = j.TIMESTAMP AND s.collector_id = j.collector_id AND s.entity_id = j.entity_id;

内部选择应该获取 3 个属性来识别快照,然后外部选择将基于内部选择返回的 3 个获取快照的所有其他属性。

我已经成功构建了内部选择,但是如何使用连接将外部选择与内部结合起来?

或者,也许,有一种不同的方式来构造查询本身,它不包括子查询......

编辑:

类似问题:jpa criteria-api: join with subselect

【问题讨论】:

    标签: java hibernate jpa criteria-api


    【解决方案1】:

    JPA 不支持 FROM 子句中的子选择。一些 JPA 提供者可能支持这一点。

    例如 EclipseLink 会: http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#Sub-selects_in_FROM_clause

    【讨论】:

    • 您可以将其移动到 where 子句并在那里使用子查询。幸运的是,您只对最大时间戳感兴趣。
    猜你喜欢
    • 2022-12-21
    • 2015-02-15
    • 1970-01-01
    • 2012-08-19
    • 2011-10-17
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    相关资源
    最近更新 更多