在QueryDSL中使用groupby处理时,是否可以获得聚合结果的计数?我有以下查询:
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'
)));
我希望得到属于某个目录的人数。
由于
答案 0 :(得分:6)
如果您不需要任何子记录,那么通过这样的转换(仅绘制草图)表示没有组的查询
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)
.groupBy(catalog.id)
.list(Projections.constructor(Catalog.class,
catalog.id,
catalog.name,
catalog.code,
catalogPerson.count()));
如果需要聚合各个结果行,则按转换组很有用。