TIL
Plmography 프로젝트 작업 로그 #41 - JPQL 에서 exists 문법 사용하기 (23.01.31 TIL)
winteringg
2023. 1. 31. 17:21
오늘은 팔로우, 팔로우 취소 기능을 구현하면서 발생한 이슈에 대해 기록해보자.
일단 내가 원한 것은 팔로우 혹은 팔로우 취소를 누르면 만들어놓은 메서드를 통해 DB 에서 id 값을 조회해서 status 가 true 혹은 false 로 변경되는 플래그를 만드는 것이었다. 그래서 JPA 에서 지원하는 existsBy 메서드를 아래와 같이 만들고 어플리케이션을 실행시켜 보았는데 플래그에는 전혀 변경되는 사항이 없었다.
boolean existsByUserIdAndFollowingId(UserId userId, FollowingId followingId);
그래서 조금 더 쿼리문을 정확히 해주기 위해 JPQL 을 사용했는데, 아래와 같은 오류가 떴다. 확인해보니 JPQL 에서는 select exists 문법은 지원하지 않는다고 한다. (where 절의 exists 는 사용 가능)

그래서 아래와 같이 개수를 세어주는 count 로 방향을 틀어 쿼리문을 작성해주니 플래그의 true, false 스위칭이 잘 동작되었다!
@Query("select count(s.followingId) > 0 from Subscribe s where s.userId = :userId and s.followingId = :followingId")
boolean existsByUserIdAndFollowingId(UserId userId, FollowingId followingId);