본문 바로가기
Java/JPA

[JPA] JOIN Null값 처리

by HJ0216 2023. 6. 20.

🟦 기본 환경: IDE: IntelliJ, Language: Java

 

1
2
3
4
5
6
7
8
@Repository
public interface TestDAO extends JpaRepository<TestOne, String> {
 
    @Query("SELECT t1, t2 FROM TestOne t1 LEFT JOIN ue.testTwo t2")
    List<Object[]> findAllWithTestOneTwo();
 
}
 
 
 

다음 소스코드를 실행하게 될 경우,

TestTwo entity에 저장된 데이터가 없더라도 null값으로 조회가 가능(LEFT JOIN)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public List<SampleDTO> testList() {
        List<Object[]> queryResult = testDAO.findAllWithTestOneTwo();
 
        List<SampleDTO> resultList = new ArrayList<>();
 
        for (Object[] result : queryResult) {
            TestOne testOne = (TestOne) result[0];
            TestTwo testTwo = (TestTwo) result[1];
 
            SampleDTO sampleDTO;
            if (userLike == null) {
                sampleDTO = new SampleDTO(testOne);
            } else {
                sampleDTO = new SampleDTO(testOne, testTwo);
            }
            resultList.add(sampleDTO);
 
        }
 
        return resultList;
    }
 
 
 

단, TestTwo의 데이터가 null값으로 넘어올 경우 sampleDTO에 값을 주입하기 위해 TestTwo 내부 필드에 대해 getter를 호출하게 되고 이에 NullPointerException이 발생하므로, null값인 경우에 대한 추가적인 로직이 필요

 

'Java > JPA' 카테고리의 다른 글

[JPA_Basic] Persistence Context 장점  (0) 2023.07.29
[JPA] @PrePersist  (0) 2023.06.25
[SpringBoot_JPA_Basic] JPA 1차 cache  (0) 2023.06.16
[JPA_Basic] JPA persist, find, remove, update  (0) 2023.06.15
[SpringBoot_JPA_1] @PathVariable  (0) 2023.06.03