@Override
public List<ProjectStatusDTO> getProjectStatus(Long departId) {
QProject qProject = QProject.project;
Predicate predicate = qProject.isNotNull().or(qProject.isNull());
predicate = StringUtils.isEmpty(departId) ? predicate : ExpressionUtils.and(predicate, qProject.departId.eq(departId));
List<ProjectStatusDTO> projectStatusDTOList = jpaQueryFactory.select(
Projections.bean(
ProjectStatusDTO.class,
qProject.status,
qProject.id.count().as("count")
)
)
.from(qProject)
.where(predicate)
.groupBy(qProject.status)
.fetch();
return projectStatusDTOList;
}
核心代碼:
Projections.bean(
ProjectStatusDTO.class,
qProject.status,
qProject.id.count().as("count")
)
注意點:
如果實體中的字段屬性和自定義的對象的屬性不一樣,請使用 .as("自定義對象中的屬性名稱")