Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- network configuration
- ㅒ
- 페이징
- GIT
- 데비안
- 처음 만나는 AI 수학 with Python
- 이터레이터
- 티스토리 쿠키 삭제
- 처음 만나는 AI수학 with Python
- resttemplate
- 리눅스
- 목록처리
- 코드로배우는스프링웹프로젝트
- 자바편
- 네트워크 설정
- 코드로배우는스프링부트웹프로젝트
- /etc/network/interfaces
- 자료구조와 함께 배우는 알고리즘 입문
- 자료구조와함께배우는알고리즘입문
- Kernighan의 C언어 프로그래밍
- 스프링부트핵심가이드
- 친절한SQL튜닝
- 스프링 시큐리티
- baeldung
- d
- 서버설정
- 선형대수
- iterator
- 알파회계
- 구멍가게코딩단
Archives
- Today
- Total
bright jazz music
[bootBoard] N:1(다대일) 연관관계: 7-2. JPQL과 left(outer) join 연관관계 X 본문
Framework/Spring
[bootBoard] N:1(다대일) 연관관계: 7-2. JPQL과 left(outer) join 연관관계 X
bright jazz music 2022. 9. 28. 21:39연관관계가 없는 엔티티 조인 처리에는 'ON'을 사용해 줘야 한다.
Board와 Member 사이에는 내부적으로 참조를 통해서 연관관계가 있었다.
//Board.java
...
@ManyToOne(fetch = FetchType.LAZY) //명시적으로 Lazy Loading 지정
private Member writer; //FK 연관관계 지정
//Reply.java
...
@ManyToOne
private Board board;
Board와 Reply는 이러한 관계가 아니다.
//Reply.java
...
@ManyToOne
private Board board;
Reply 쪽이@ManyToOne으로 참조하고 Board를 참조하고 있지만 Board에서는 Reply 객체를 참조하고 있지 않다. 이러한 경우에는 "ON'을 이용해서 직접 조인을 작성해 줘야 한다. 순수 SQL로 작성하자면 아래와 같다.
select
board.bno, board.title, board.writer_email, rno, text
from board left outer join reply
on reply.board_bno = board.bno
where board.bno = 100;
BoardRepository.java에 JPQL을 사용하여 작성하면 아래와 같다.
//BoardRepository.java
...
//ON을 사용하여 Reply와 조인
@Query("SELECT b, r FROM Board b LEFT OUTER JOIN Reply r ON r.board = b WHERE b.bno = :bno")
List<Object[]> getBoardWithReply(@Param("bno") Long bno);
BoardRepositoryTests.java에 테스트
//BoardRepositoryTests.java
...
@Test
public void testGetBoardWithReply(){
List<Object[]> result = boardRepository.getBoardWithReply(100L);
for (Object[] arr : result) {
System.out.println(Arrays.toString(arr));
}
}
결과
'Framework > Spring' 카테고리의 다른 글
[bootBoard] N:1(다대일) 연관관계: 8-2. 조회 화면에 필요한 JPQL 생성 (0) | 2022.09.29 |
---|---|
[bootBoard] N:1(다대일) 연관관계: 8-1. 목록화면에 필요한 JPQL 생성 (0) | 2022.09.28 |
[bootBoard] N:1(다대일) 연관관계: 7-1. JPQL과 left(outer) join 연관관계 O (0) | 2022.09.28 |
[bootBoard] N:1(다대일) 연관관계: 6-2. @ManyToOne과 Lazy loading (0) | 2022.09.27 |
[bootBoard] N:1(다대일) 연관관계: 6-1. @ManyToOne과 Eager loading (0) | 2022.09.27 |
Comments