JPA Criteria API - SubQuery

0

Cześć,
Próbuję zrobić zapytanie

select max(liczba) from (
		SELECT issuer_id, count(1) as liczba FROM INVOICE 
		group by issuer_id
		order by count(issuer_id) desc
	)
);

Zrobiłem podzapytanie:

public void t4() {
        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<Tuple> mainQuery = cb.createQuery(Tuple.class);
        Root<Invoice> root = mainQuery.from(Invoice.class);
        mainQuery.groupBy(root.get("invoiceIssuer"));
        mainQuery.orderBy(cb.desc(cb.count(root.get("invoiceIssuer"))));
        mainQuery.multiselect(root.get("invoiceIssuer"), cb.count(root.get("invoiceIssuer")));
        List<Tuple> results = entityManager.createQuery(mainQuery).getResultList();
        results.forEach(System.out::println);

    }

Jednak nie wiem, czy w klauzuli from mogę dodać podzapytanie. Próbowałem już gemini,copilot, chatgpt, blackboxa, ale każdy wygenerowany przez nie przykład jest błędny.

Zakładam, że źle do tego podchodzę.

Docelowo chciałem osiąnąć takie zapytanie, które wykaże firmy z największą ilością wystawionych faktur.

SELECT issuer_id, count(1) as liczba FROM INVOICE 
group by issuer_id
having count(1) = (

	select max(liczba) from (
		SELECT issuer_id, count(1) as liczba FROM INVOICE 
		group by issuer_id
		order by count(issuer_id) desc
    	)
	);

Jednak stwierdziłem, że zacznę od przygotowania prostszego podzapytania.

Byłym bardzo wdzięczny za każdą podpowiedź, dziękuję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1