From 871278d43a60f115a66f0a4fa7bdd190531480db Mon Sep 17 00:00:00 2001 From: wowo-zZ Date: Sat, 14 Mar 2026 17:03:58 +0800 Subject: [PATCH] fix(infra): add @Transactional to incrementDownloadCount The @Modifying query requires a transaction context to execute. Adding @Transactional at the repository method level ensures the update query runs within a transaction, even when called from async event listeners. This fixes the issue where download counts were not being incremented after skill downloads due to TransactionRequiredException. --- .../java/com/iflytek/skillhub/infra/jpa/SkillJpaRepository.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/SkillJpaRepository.java b/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/SkillJpaRepository.java index feeda77a..0a871c2e 100644 --- a/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/SkillJpaRepository.java +++ b/server/skillhub-infra/src/main/java/com/iflytek/skillhub/infra/jpa/SkillJpaRepository.java @@ -10,6 +10,7 @@ import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Optional; @@ -29,6 +30,7 @@ public interface SkillJpaRepository extends JpaRepository, SkillRep List findByOwnerId(String ownerId); @Modifying + @Transactional @Query("UPDATE Skill s SET s.downloadCount = s.downloadCount + 1 WHERE s.id = :skillId") void incrementDownloadCount(@Param("skillId") Long skillId); }