SELECT 절에서 사용하기
JPAExpressions
를 이용해 서브쿼리를 작성할 수 있다.
@Override
public UserResponseDto getUserWithCount() {
return queryFactory.select(
Projections.constructor(
UserResponseDto.class,
user,
JPAExpressions.select(count(user.id))
.from(user)
)
)
.from(user)
.fetch();
}
서브쿼리에서도 WHERE
절을 사용해 어떤 값을 검색하고자 할 때는 아래와 같이 한다.
@Override
public UserResponseDto getUserWithParentName() {
QUser u = new QUser("u");
return queryFactory.select(
Projections.constructor(
UserResponseDto.class,
user,
JPAExpressions.select(u.name)
.from(u)
.where(u.id.eq(user.parent))
)
)
.from(user)
.fetch();
}
WHERE 절에서 사용하기
SELECT
와 비슷한 방법으로 사용한다.
QEmployee employee = QEmployee.employee;
QEmployee e = new QEmployee("e");
queryFactory.selectFrom(employee)
.where(employee.weeklyhours.gt(
JPAExpressions.select(e.weeklyhours.avg())
.from(employee.department.employees, e)
.where(e.manager.eq(employee.manager))))
.fetch();
'STUDY > Spring' 카테고리의 다른 글
Spring Boot | HandlerMethodArgumentResolver로 Authentication 정보 간단하게 받기 (0) | 2021.09.24 |
---|---|
JPA | @DataJpaTest (0) | 2021.09.08 |
Spring Boot | Querydsl Projections (0) | 2021.08.20 |
Spring Boot | PageRequest (0) | 2021.08.18 |
Spring Boot | Querydsl 추가 (Gradle 7.x) (1) | 2021.08.10 |