Files
sodalive-backend-spring-boot/docs/20260312_푸시알림조회쿼리오류수정.md

1.6 KiB

푸시 알림 조회 쿼리 오류 수정

  • PushNotificationController 연계 조회 API에서 발생한 DB 조회 오류 재현 경로와 실제 실패 쿼리 식별
  • QuerySyntaxException 원인인 JPQL/HQL 함수 사용 구문을 코드베이스 패턴에 맞게 수정
  • 수정 코드 정적 진단 및 테스트/빌드 검증 수행
  • 검증 결과를 문서 하단에 기록

검증 기록

1차 수정

  • 무엇을: PushNotificationListRepository.recipientContainsMember의 QueryDSL 템플릿을 JSON_CONTAINS({0}, JSON_ARRAY({1}), '$')에서 function('JSON_CONTAINS', {0}, function('JSON_ARRAY', {1}), '$') = 1로 수정했다.
  • 왜: Hibernate JPQL/HQL 파서는 MySQL 함수명(JSON_CONTAINS, JSON_ARRAY) 직접 호출 구문을 인식하지 못해 QuerySyntaxException이 발생하므로, JPQL 표준 함수 호출 래퍼(function)로 감싸 파싱 가능하도록 변경이 필요했다.
  • 어떻게:
    • 검색: grep/AST/Explore/Librarian로 PushNotificationController -> PushNotificationService -> PushNotificationListRepository 호출 흐름과 문제 쿼리를 확인했다.
    • 정적 진단: lsp_diagnostics로 Kotlin 파일 진단을 시도했으나 현재 환경에 .kt LSP 서버 미설정으로 실행 불가를 확인했다.
    • 테스트: ./gradlew test --tests "kr.co.vividnext.sodalive.fcm.notification.PushNotificationServiceTest" --tests "kr.co.vividnext.sodalive.fcm.notification.PushNotificationControllerTest" 실행 결과 BUILD SUCCESSFUL.
    • 빌드: ./gradlew build -x test 실행 결과 BUILD SUCCESSFUL.