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전체를 가지고 오도록 변경하여 로그인 성공
이슈 내용
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전체를 가지고 오도록 변경하여 로그인 성공