🟦 기본 환경: 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 |