【问题标题】:Is this SQL query possible in JPA2 critera API?JPA2 标准 API 中是否可以进行此 SQL 查询?
【发布时间】:2012-02-14 23:43:28
【问题描述】:

从 tbl 中选择 * WHERE version = (SELECT MAX(version) FROM tbl WHERE t2.entityId = t1.entityId)

Tbl 描述了不同版本的实体,其中 entityId 和版本的每个组合都是唯一的。我想找到每个 entityId 的最高版本(整行,而不仅仅是版本号)。这可以通过 Criteria API 实现吗?我见过的子查询的唯一用途只涉及使用“IN”而不是比较值。我也想过将子查询转换为复杂的 LEFT JOIN,但 Criteria API 不支持自定义 ON 语句。

这可能吗?由于查询是非常动态的,我宁愿避免使用 JPQL(如果它甚至可以使用 JPQL)。

【问题讨论】:

    标签: hibernate jpa-2.0 criteria-api


    【解决方案1】:

    使用 criteriaBuilder.in(path).value(subquery) 解决。

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 1970-01-01
      • 2014-06-09
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多