반응형
Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Java
- stockx.com
- jQuery
- Linux
- 주식공부
- dunk high
- 코로나19
- 발매예정
- Nike
- 자바스크립트
- 리눅스
- 드로우
- oracle
- 덩크로우
- react
- 주식
- 나이키
- Python
- GIT
- dunklow
- 제이쿼리
- draw
- JavaScript
- Dunk Low
- 리액트
- 파이썬
- 오라클
- sacai
- 덩크 로우
- 덩크 하이
Archives
- Today
- Total
Life goes slowly...
[JPA] JPA - ExpressionUtils / 서브쿼리 본문
728x90
반응형
1. ExpressionUtils란?
ExpressionUtils는 Expression(표현식)을 조합하거나
서브쿼리를 select 절에 포함시킬 때 사용하는 유틸입니다.
주 용도
- 서브쿼리 → 컬럼처럼 사용
- alias 지정
- 산술 연산용 Expression 구성
2. 서브쿼리 기본 (JPAExpressions)
queryFactory
.selectFrom(member)
.where(member.age.gt(
select(member.age.avg())
.from(member)
))
.fetch();
3. Select 절에 서브쿼리 넣기 (ExpressionUtils.as)
queryFactory
.select(
member.username,
ExpressionUtils.as(
select(member.age.avg())
.from(member),
"avgAge"
)
)
.from(member)
.fetch();
*ExpressionUtils.as(Expression, alias) - alias는 DTO 매핑용
4. 집계 함수 총정리

5. 올바른 산술 연산 방법 (NumberExpression)
//Select 절에서 직접 계산
NumberExpression<Long> expr =
order.price.sum().subtract(refund.price.sum());
//서브쿼리 + NumberTemplate
NumberExpression<Long> diff =
Expressions.numberTemplate(
Long.class,
"({0}) - ({1})",
select(order.price.sum()).from(order),
select(refund.price.sum()).from(refund)
);
.select(diff)
.from(member)
.fetch();
--서브쿼리 간 뺄셈은 Template 필수728x90
반응형
'프로그래밍 > Java' 카테고리의 다른 글
| [JPA] JPA에서 JpaRepository를 사용하여 쿼리 작성 방법 (0) | 2026.01.31 |
|---|---|
| [JPA] JPA + Querydsl 코드 작성방법 (0) | 2026.01.29 |
| [JPA] JPA ExpressionUtils 서브쿼리로 연산방법 (0) | 2026.01.28 |
| [JPA]JPA 로 개발하면서 자주 하는 실수 Top 5 (0) | 2026.01.27 |
| [JPA] JPA 핵심 개념 5가지!!! (0) | 2026.01.26 |
| [JPA] 초보자가 쉽게 이해하는 JPA 동작구조 (0) | 2026.01.25 |
| [JPA] 초보자가 쉽게 이해하는 Spring Data JPA 설명 (3) | 2026.01.24 |
| [Java] 자바에서 객체 정렬하기 - Comparable, Comparator (0) | 2020.10.17 |
Comments