Ist es möglich, die Anzahl der aggregierenden Ergebnisse zu erhalten, wenn GroupBy Verarbeitung in QueryDSL verwendet? Ich habe folgende Abfrage:Count in QueryDSL Gruppierung Transformator
query.from(catalog)
.innerJoin(qe).on(catalog.id.eq(qe.itemId))
.innerJoin(enterprise).on(enterprise.id.eq(qe.enterpriseId))
.leftJoin(catalogPerson).on(catalogPerson.catalogId.eq(catalog.id))
.where(catalog.deletionDate.isNull(), qe.enterpriseId.eq(org))
.orderBy(catalog.creationDate.desc())
.limit(limit)
.offset(offset)
.transform(groupBy(catalog.id).as(Projections.constructor(Catalog.class,
catalog.id,
catalog.name,
catalog.code,
// //GET THE NUMBER OF CATALOG PERSONS'
)));
und ich möchte die Anzahl der Personen zu dem bestimmten Katalog zu erhalten. durch Transformation wie folgt
Dank
Danke Timo. Nur ein kleiner Vorschlag. Es wäre schön, wenn jemand "QueryDSL-Rezepte" für einige Beispiele aus dem wirklichen Leben ausarbeiten könnte, die in der Dokumentation nicht erwähnt werden, wie diese. – Nedo
Gute Idee. Welchen Rezepttitel würden Sie für dieses Beispiel vorschlagen? Projections.constructor und count() machen dies zu etwas Besonderem, der Rest ist recht gewöhnliche SQL-Verwendung von Querydsl. –
So etwas wie "Aggregieren von Kindern zählt in Parent-Entity" oder "Aggregation zählt in Root-Entity" ... =) Ich werde versuchen, einige ungewöhnliche QueryDSL-Konstruktionen von hier auf Stackoverflow wieder zu vereinigen. – Nedo