From c01810622f55fa270cda88bc9d388729bb0e2251 Mon Sep 17 00:00:00 2001 From: Gothax Date: Fri, 20 Feb 2026 00:18:20 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20scheduler=20=ED=99=98=EA=B2=BD=EC=97=90?= =?UTF-8?q?=EC=84=9C=20lazy=20initialization=20exception=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fetch join 추가 --- .../repository/ApplicationInterviewRepository.java | 9 +++++++++ .../infra/ses/ApplicationEmailRetryScheduler.java | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/ceos/backend/domain/application/repository/ApplicationInterviewRepository.java b/src/main/java/ceos/backend/domain/application/repository/ApplicationInterviewRepository.java index f23e9b1b..431d89e3 100644 --- a/src/main/java/ceos/backend/domain/application/repository/ApplicationInterviewRepository.java +++ b/src/main/java/ceos/backend/domain/application/repository/ApplicationInterviewRepository.java @@ -5,7 +5,16 @@ import ceos.backend.domain.application.domain.ApplicationInterview; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; public interface ApplicationInterviewRepository extends JpaRepository { List findAllByApplication(Application application); + + @Query( + "select ai from ApplicationInterview ai" + + " join fetch ai.interview" + + " where ai.application = :application") + List findAllByApplicationFetchInterview( + @Param("application") Application application); } diff --git a/src/main/java/ceos/backend/infra/ses/ApplicationEmailRetryScheduler.java b/src/main/java/ceos/backend/infra/ses/ApplicationEmailRetryScheduler.java index 4c04e99c..864d3e03 100644 --- a/src/main/java/ceos/backend/infra/ses/ApplicationEmailRetryScheduler.java +++ b/src/main/java/ceos/backend/infra/ses/ApplicationEmailRetryScheduler.java @@ -11,7 +11,6 @@ import ceos.backend.infra.ses.domain.EmailType; import ceos.backend.infra.ses.domain.SendStatus; import ceos.backend.infra.ses.repository.EmailSendHistoryRepository; -import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -20,6 +19,8 @@ import org.springframework.stereotype.Component; import org.thymeleaf.context.Context; +import java.util.List; + @Slf4j @Component @RequiredArgsConstructor @@ -59,7 +60,8 @@ public void retryFailedApplicationEmails() { final List answers = applicationAnswerRepository.findAllByApplication(application); final List interviews = - applicationInterviewRepository.findAllByApplication(application); + applicationInterviewRepository.findAllByApplicationFetchInterview( + application); final Context context = awsSESMailGenerator.generateApplicationMailContext( application, answers, interviews);