해결된 질문
21.12.14 18:09 작성
·
560
0
안녕하세요. 강의 잘 듣고 있습니다 :)
exists 기능을 구현하고 있는데, fetchJoin을 사용해봤습니다. 그저 데이터의 유무만 판단하면 됐기에 selectOne() 으로 조회를 했는데 실패하네요 ㅠㅠ 하지만 이후 fetchJoin()을 제거하니 잘 동작하는 모습을 확인했습니다.
// 성공하는 코드
@Override
public boolean existsByReviewEntity(ReviewEntity reviewCond) {
final Integer result = queryFactory
.selectOne()
.from(reviewCommentEntity)
.innerJoin(reviewCommentEntity.reviewEntity, reviewEntity)
.where(reviewEq(reviewCond))
.fetchFirst();
return result != null;
}
// 실패하는 코드
@Override
public boolean existsByReviewEntity(ReviewEntity reviewCond) {
final Integer result = queryFactory
.selectOne()
.from(reviewCommentEntity)
.innerJoin(reviewCommentEntity.reviewEntity, reviewEntity).fetchJoin()
.where(reviewEq(reviewCond))
.fetchFirst();
return result != null;
}
제 생각에는 두 가지 이유가 추측되는데요,
1. selectOne 이랑 fetchJoin의 실행 순서(?)
2. select 1 을 하면 특정 필드를 가져오는 것이 아니기 때문에 fetchJoin이 불가능(?)
열심히 구글을 찾아봐도 만족스러운 답을 찾지 못했고, 두루뭉실하게 의문만 남아있는 상태네요..
도움 주시면 감사하겠습니다 !!
짤막한 힌트도 좋습니다 :)
2021. 12. 15. 09:37
감사합니다 !! 그걸 몰랐네요,..