728x90
(root, query, criteriaBuilder) -> { ... }
(root, query, criteriaBuilder) -> { ... }는 Java의 JPA Criteria API에서 사용되는 람다식입니다. 보통 Spring Data JPA에서 동적 쿼리를 만들 때 자주 등장하죠. 각각의 매개변수는 다음과 같은 역할을 합니다.
✅ root
- Entity의 루트 객체입니다.
- 조회하려는 테이블(또는 엔티티)의 정보를 나타냅니다.
- 예: root.get("name") → name이라는 컬럼(필드)을 의미.
✅ query
- CriteriaQuery 객체입니다.
- 쿼리 전체 구조를 정의할 수 있게 도와줍니다.
- 예: query.select(...), query.where(...) 등을 설정할 수 있음.
Specification<User> spec = (root, query, criteriaBuilder) -> {
query.distinct(true); // 중복 제거
query.orderBy(criteriaBuilder.asc(root.get("createdAt"))); // 정렬 추가
return criteriaBuilder.equal(root.get("status"), "ACTIVE");
};
✅ criteriaBuilder
- Criteria 쿼리를 생성하는 도구입니다.
- 조건(where), 정렬(orderBy), 비교(equal, greaterThan 등) 등을 만들 수 있습니다.
- 예: criteriaBuilder.equal(...), criteriaBuilder.like(...)
Specification<User> spec = (root, query, criteriaBuilder) -> {
return criteriaBuilder.equal(root.get("username"), "chatgpt");
};728x90
'공부 > Spring Boot' 카테고리의 다른 글
| JPA의 영속 상태(Persistent State) (0) | 2025.05.05 |
|---|---|
| @SQLRestriction("IS_DELETED = 0") (0) | 2025.02.10 |
| @SQLRestriction 어노테이션: 사용법과 장단점 분석 (1) | 2024.11.20 |
| [Java] Spring Boot - JPA @PrePersist, @PreUpdate (0) | 2024.11.20 |
| Spring Boot Webflux란 (0) | 2024.01.12 |