OliveLover / miniproject_hanhae66

0 stars 5 forks source link

ClassCastException 오류 발생 (해결) #22

Open OliveLover opened 1 year ago

OliveLover commented 1 year ago

이슈 내용

ClassCastException 오류 발생

g.ClassCastException: class java.lang.String cannot be cast to class com.sparta.hanghae66.entity.User (java.lang.String is in module java.base of loader 'bootstrap'; com.sparta.hanghae66.entity.User is in unnamed module of loader 'app') at com.sparta.hanghae66.service.UserService.login(UserService.java:70) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]

이슈 원인

String 타입인 Id를 User 객체로서 사용하련는 과정에서 발생한 오류

해결을 위하여 시도해본 것

try 문 안에

Optional<User> found = userRepository.findByUserId(userId);if (found.isPresent()) { return new ResponseDto("아이디 중복", HttpStatus.*BAD_REQUEST*);}

이곳은 해결되어도 found는 user의 id값만 가지고 있어서

비밀번호 인증에 사용할 수 없었음

해결 방법

@Repositorypublic interface UserRepository extends JpaRepository<User, String> { @Query("SELECT u FROM TB_USER u WHERE u.id = :userId") Optional<User> findByUserId(@Param("userId") String userId);}

UserRepository에서 쿼리문을

@Query(”SELECT u. id ….. “) → @Query(”SELECT u ….”) 로변경하여

uere의 string id 값만이 아닌 user전체를 가지고 오도록 변경하여 로그인 성공

Untitled

kanteluv commented 1 year ago

일찍 오겠습니다..