public List<UserRankingResponse> findUsersByCampus(Campus campus) {
return queryFactory.
select(Projections.bean(UserRankingResponse.class, QMap.map.user,QMap.map.id.count().as("mapCount")))
.from(QMap.map)
.join(QMap.map.user, QUser.user)
.where(QUser.user.campus.eq(campus))
.groupBy(QUser.user.id)
.orderBy(QMap.map.id.count().desc())
.limit(5)
.fetch();
}
리턴타입을 Dto로 받아서 하고 싶을때 Projections.bean([리턴타입].class, 넣을 속성들…)
이런식으로 써주면 됨
count() 사용할 때
alias 를 꼭 지정해줘야한다
QMap.map.id.count().as("mapCount")
alias 이름은 dto 속성의 이름과 통일시켜야한다.