Error zip

[Spring] Modifying queries can only use void or int/Integer as return type!

JANNNNNN 2024. 5. 19. 11:41

에러

[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Modifying queries can only use void or int/Integer as return type! Offending method: public abstract com.cos.photogramstart.domain.comment.Comment com.cos.photogramstart.domain.comment.CommentRepository.mSave(java.lang.String,int,int); nested exception is java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as return type! Offending method: public abstract com.cos.photogramstart.domain.comment.Comment com.cos.photogramstart.domain.comment.CommentRepository.mSave(java.lang.String,int,int)] with root cause

java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as return type! Offending method: public abstract com.cos.photogramstart.domain.comment.Comment com.cos.photogramstart.domain.comment.CommentRepository.mSave(java.lang.String,int,int)

상황

댓글기능 작성 중 IllegalArgumentException에러가 발생 ...

Comment Entity를 리턴하고 싶어서 반환 타입을 Comment로 했더니 에러 메시지는 int/Integer로만 바꿔야한다고 함

근데!! int 타입으로 바꾸면 Comment타입을 반환하지 않고 그냥 숫자만 반환하니까 PK값을 몰라서

나중에 댓글을 삭제할 때 PK값을 알아야 삭제할 수 있기 때문에 댓글 삭제에서 에러가 발생할 수 있다는 것을 알게됨.

해결책

네이티브 쿼리로 content, imageId, userId를 저장하는 걸 작성했는데 이걸 삭제하고 그냥 save를 호출하기로 !

➡️네이티브쿼리 삭제

➡️그냥 save 호출로 바꿈

+ 추가로, 나는 Comment Entity에서 username이 필요했는데 그러기위해선 userRepository에서 findById로 userId값의 data를 찾고, userEntity에 저장해서 그걸 set했음

해결완료🫠

➡️정상적으로 이제 응답..!