这个SQL查询在JPA2标准API中是否可行?

时间:2012-01-20 11:42:50

标签: hibernate jpa-2.0 criteria-api

SELECT * FROM tbl     版本=(SELECT MAX(版本)FROM tbl WHERE t2.entityId = t1.entityId)

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

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

1 个答案:

答案 0 :(得分:0)

使用criteriaBuilder.in(路径).value(子查询)解决。