동일한 엔티티 객체 단위의 데이터를 가져올 떄는 크게 상관이 없지만
각각의 다른 타입의 데이터를 추출할 때 많이 사용된다.
Tuple을 이용한 간단한 예제를 작성해서 어떤식으로 작성을 해서 사용하는지 익혀놓는다.
@Override
public Board search() {
//1. Q도메인 생성
QBoard board = QBoard.board;
QReply reply = QReply.reply;
QMember member = QMember.member;
// 2. from 절 설정
JPQLQuery<board> jpqlQuery = from(board);
// 3. join
jpqlQuery.leftJoin(member).on(board.writer.eq(member);
jpqlQuery.leftJoin(reply).on(reply.board.eq(board);
// 4. Tuple을 사용해서 쿼리문 저장
JPQLQuery<Tuple> tuple = jpqlQuery.select(board, member, reply.count());
// 5. group by
tuple.groupBy(board);
// tuple로 생성하여 만든 쿼리문의 결과집합을 가져온다.
List<Tuple> result = tuple.fetch();
return null;
}
기존에 @Query로 작성할 떄는 특정 클래스를 기준으로 연관관계가 참조된 엔티티를 불러올때
on절을 사용하지 않아도 되지만 JPQLQuery로 설정 할때는 on절이 무조건적으로 들어갔다.
'Back-End > Spring' 카테고리의 다른 글
MyBatis로 DB 칼럼 과 Java Property mapping 방법( XML, Annotation) (0) | 2021.03.22 |
---|---|
Security OAuth 초기 설정 및 간단 설명 (0) | 2021.03.11 |
(1) QueryRepositorySupport (0) | 2021.03.09 |
thymeleaf 사용 시 날짜포맷팅 (2) | 2021.03.01 |
테스트폴더에 lombok 적용 (0) | 2021.03.01 |