diff --git a/backend/src/main/java/com/qqchen/deploy/backend/entity/User.java b/backend/src/main/java/com/qqchen/deploy/backend/entity/User.java index 3ae3b4b1..c98f00f1 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/entity/User.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/entity/User.java @@ -48,7 +48,7 @@ public class User extends Entity { @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) // 指向 UserRole 的 user 属性 - private List userRoles; + private Set userRoles; // public void addRole(Role role) { // UserRole userRole = new UserRole(this, role); diff --git a/backend/src/main/java/com/qqchen/deploy/backend/repository/UserRoleRepository.java b/backend/src/main/java/com/qqchen/deploy/backend/repository/UserRoleRepository.java index 5919bd72..b85324a7 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/repository/UserRoleRepository.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/repository/UserRoleRepository.java @@ -3,16 +3,25 @@ package com.qqchen.deploy.backend.repository; import com.qqchen.deploy.backend.common.repository.BaseRepository; import com.qqchen.deploy.backend.entity.UserRole; +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 java.util.List; +import java.util.Set; @Repository public interface UserRoleRepository extends BaseRepository { - - List findByUserId(Long userId); - - void deleteByUserId(Long userId); - - List findByRoleId(Long roleId); + + @Query("SELECT ur FROM UserRole ur WHERE ur.user.id = :userId") + Set findByUserId(@Param("userId") Long userId); + + @Modifying + @Query("DELETE FROM UserRole ur WHERE ur.user.id = :userId AND ur.role.id = :roleId") + void deleteByUserIdAndRoleId(@Param("userId") Long userId, @Param("roleId") Long roleId); + + + @Query("SELECT COUNT(ur) > 0 FROM UserRole ur WHERE ur.user.id = :userId AND ur.role.id = :roleId") + boolean existsByUserIdAndRoleId(@Param("userId") Long userId, @Param("roleId") Long roleId); + } \ No newline at end of file