Java Persistence Entitymanager - Select 来自另一个查询的结果集

Java Persistence Entitymanager - Select from another query's result set

我目前有以下问题。我知道这可以用作 SQL 查询,但因为我使用的是来自 javax.persistence 的 EntityManager,它需要 JPQL。而且我不知道 JPQL。如果有一种方法可以用 JPQL 重写它,那就太好了。

Query q = entityManager.createNativeQuery("
    WITH original AS (SELECT *, COUNT(ref) as c FROM Tri WHERE triH IN :list GROUP BY ref
    SELECT ref FROM original WHERE c = :amtTri");
q.setParameter("list", posTri);
q.setParameter("amtTri", posTri.size());

实际查询:

WITH original AS (SELECT *, COUNT(ref) as c FROM Tri WHERE triH IN :list GROUP BY ref
SELECT ref FROM original WHERE c = :amtTri

我正在尝试使用 Repository 方法在 Quarkus 项目中执行此操作,如果有办法使用它,那也很好

提前致谢!

我相信使用 EntityManager 并不一定要使用 JPQL,您还可以使用 Native Queries。

由于您的查询看起来并不那么简单(至少对我而言),我会使用 Native Queries 而不是 JPQL。您可以使用 javax.persistence 中的 EntityManager 运行 本机查询。 This tutorial 说明如何执行此操作。