java 배우기/TIL

여러 역할이 부여된 유저찾기 오류

checkuu 2024. 10. 16. 15:53

유저에 각 workspace마다 멤버 역할을 부여하다보니 한 유저가 여러 멤버를 가질수 있게됨.

기본 member 생성코드는 workspace안에서 멤버 찾을때 해당 워크스페이스가 아닌 모든 멤버가 찾아져서 오류가 발생함

 

오류 내용
2024-10-16T14:57:05.550+09:00 ERROR 15620 --- [spring-trello] [nio-8080-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.IncorrectResultSizeDataAccessException: Query did not return a unique result: 2 results were returned] with root cause

쿼리의 결과가 예상한 것과 달리 두 개 이상의 결과를 반환했기 때문

 

쿼리 변경

 

findByUserId -> findByWorkspaceIdAndUserId 로 변경하면서 멤버권한 검사하는 모든 쿼리에 workspaceId를 넣게됨.

id값을 하나더 넣게 되면 많은 부분이 고쳐지고 입력할때도 번거로워서 해당서비스의 entity에서 상위entity 찾아서 올라가 workspaceId 넣는 식으로 바꿈

 

 

해결되어 문제없이 작동하는걸 확인.