From 9e030a1caa27799ead30c1c3932b51a51f9c934a Mon Sep 17 00:00:00 2001 From: songsunkook Date: Wed, 31 Dec 2025 19:09:34 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=EC=96=B4=EB=93=9C=EB=AF=BC=20api=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=EC=97=90=20=EB=B0=B0=ED=83=80=EB=9D=BD=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../koin/admin/abtest/repository/AccessHistoryRepository.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java b/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java index 07defb974..29e5c2ca8 100644 --- a/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java +++ b/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java @@ -19,6 +19,8 @@ public interface AccessHistoryRepository extends Repository findById(Integer id); + @Lock(LockModeType.PESSIMISTIC_WRITE) + @QueryHints({@QueryHint(name = "jakarta.persistence.lock.timeout", value = "3000")}) Optional findByDeviceId(Integer deviceId); default AccessHistory getById(Integer accessHistoryId) { From 5727236a1a7c6428d7196598f4ded54bbbb01c4a Mon Sep 17 00:00:00 2001 From: songsunkook Date: Wed, 31 Dec 2025 19:57:11 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20device=20=EC=A0=95=EB=B3=B4=EB=A5=BC?= =?UTF-8?q?=20fetch=20join=EC=9C=BC=EB=A1=9C=20=ED=95=A8=EA=BB=98=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../koin/admin/abtest/repository/AccessHistoryRepository.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java b/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java index 29e5c2ca8..e580732a4 100644 --- a/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java +++ b/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java @@ -3,6 +3,7 @@ import java.util.Optional; import org.springframework.data.jpa.repository.Lock; +import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.QueryHints; import org.springframework.data.repository.Repository; @@ -17,6 +18,7 @@ public interface AccessHistoryRepository extends Repository findById(Integer id); @Lock(LockModeType.PESSIMISTIC_WRITE) From c0e6bf817629cc835423984c837bef14ecac6fe5 Mon Sep 17 00:00:00 2001 From: songsunkook Date: Wed, 31 Dec 2025 20:00:16 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=EC=96=B4=EB=93=9C=EB=AF=BC=20api=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=EC=97=90=20fetch=20join=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../koin/admin/abtest/repository/AccessHistoryRepository.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java b/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java index e580732a4..4d5cfa228 100644 --- a/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java +++ b/src/main/java/in/koreatech/koin/admin/abtest/repository/AccessHistoryRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.QueryHints; import org.springframework.data.repository.Repository; +import org.springframework.data.repository.query.Param; import in.koreatech.koin.admin.abtest.exception.AccessHistoryNotFoundException; import in.koreatech.koin.admin.abtest.model.AccessHistory; @@ -23,7 +24,8 @@ public interface AccessHistoryRepository extends Repository findByDeviceId(Integer deviceId); + @Query("SELECT a FROM AccessHistory a JOIN FETCH a.device WHERE a.device.id = :deviceId") + Optional findByDeviceId(@Param("deviceId") Integer deviceId); default AccessHistory getById(Integer accessHistoryId) { return findById(accessHistoryId).orElseThrow(() ->