본문 바로가기
관리자

Programming-[Backend]/JPA

[링크] JPA Map 결과 리턴(결과 집합 그루핑)

728x90
반응형

 

JPA에서 결과를 Map형태로 추출하고 싶을때는, transform 메서드와 GroupBy.groupBy 인터페이스를 활용하면 된다.

 

 


3.2.4. 결과 집합(aggregation)

com.mysema.query.group.GroupBy 클래스는 메모리에서 쿼리 결과에 대한 집합 연산을 수행하는 집합 함수를 제공한다. 다음은 사용 예이다.

부모 자식 관계에 대한 집합 연산

import static com.mysema.query.group.GroupBy.*;

Map<Integer, List<Comment>> results = query.from(post, comment)
    .where(comment.post.id.eq(post.id))
    .transform(groupBy(post.id).as(list(comment)));

이 코드는 post id와 관련된 커멘트를 매핑한다.

다중 결과 컬럼

Map<Integer, Group> results = query.from(post, comment)
    .where(comment.post.id.eq(post.id))
    .transform(groupBy(post.id).as(post.name, set(comment.id)));

이 코드는 post id와 Group을 매핑한다. Group은 post name과 comment id를 갖는다.

Group은 GroupBy에 대해 Tuple 인터페이스와 같은 역할을 한다.

더 많은 예제는 여기를 참고한다.

 

 

 


 


 

 

1. querydsl.com

http://querydsl.com/static/querydsl/3.7.2/reference/ko-KR/html/ch03s02.html

 

3.2. 결과 처리

Querydsl은 결과 처리를 커스터마이징 하기 위해 행 기반 변환을 위한 FactoryExpressions과 집합을 위한 ResultTransformer를 제공하고 있다. com.mysema.query.types.FactoryExpression 인터페이스는 빈 생성, 생성자 호

querydsl.com

 

2. cat_ozzu 님 공유 감사합니다.

728x90
반응형