개발을 하던 중 No property found for type 에러가 발생했다 ...
아래 해당 오류 메시지를 첨부하겠다 ..
오류 메시지
Caused by: java.lang.IllegalArgumentException: Failed to create query for method public abstract NewYear.Wish.entity.UserRefreshToken NewYear.Wish.repository.UserRefreshTokenRepository.findByUserIdAndReAndRefreshToken(java.lang.String,java.lang.String); No property 're' found for type 'UserRefreshToken'
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:107) ~[spring-data-jpa-3.1.5.jar:3.1.5]
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:124) ~[spring-data-jpa-3.1.5.jar:3.1.5]
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:258) ~[spring-data-jpa-3.1.5.jar:3.1.5]
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:95) ~[spring-data-jpa-3.1.5.jar:3.1.5]
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:111) ~[spring-data-commons-3.1.5.jar:3.1.5]
... 86 common frames omitted
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property 're' found for type 'UserRefreshToken'
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:90) ~[spring-data-commons-3.1.5.jar:3.1.5]
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:405) ~[spring-data-commons-3.1.5.jar:3.1.5]
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:381) ~[spring-data-commons-3.1.5.jar:3.1.5]
at org.springframework.data.mapping.PropertyPath.lambda$from$0(PropertyPath.java:334) ~[spring-data-commons-3.1.5.jar:3.1.5]
at java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330) ~[na:na]
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:316) ~[spring-data-commons-3.1.5.jar:3.1.5]
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:299) ~[spring-data-commons-3.1.5.jar:3.1.5]
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81) ~[spring-data-commons-3.1.5.jar:3.1.5]
at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:242) ~[spring-data-commons-3.1.5.jar:3.1.5]
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na]
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na]
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na]
at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:243) ~[spring-data-commons-3.1.5.jar:3.1.5]
at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:372) ~[spring-data-commons-3.1.5.jar:3.1.5]
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na]
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na]
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na]
at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:373) ~[spring-data-commons-3.1.5.jar:3.1.5]
at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:96) ~[spring-data-commons-3.1.5.jar:3.1.5]
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:100) ~[spring-data-jpa-3.1.5.jar:3.1.5]
... 90 common frames omitted
오류를 읽어보니 " No property 're' found for type 'UserRefreshToken' " 가 있었다.
UserRefreshToken DB 접근 시에 JPA 문제가 있는 듯 하여 해당 repository를 살펴보았다 ..!!
@Repository
public interface UserRefreshTokenRepository extends JpaRepository<UserRefreshToken, Long> {
//UserID와 userID + Token 기준으로 찾음
UserRefreshToken findByUserId(String userId);
UserRefreshToken findByUserIdAndReAndRefreshToken(String userId, String refreshToken);
}
잘보면 ,, , findByUserIdAndRefreshToken 이라고 명명되어야 하는 데 AndRe가 한번 더 들어갔다 ...
JPA에서 지원되는 쿼리 메서드에 사용되는 규칙(findByUserId같은 것들 ,, 카멜표기법으로 사용하지 않았을 때도 오류가 났었다.)을 잘못 만드는 경우에도 PropertyReferenceException: No property found for type 가 발생하는 듯 하다.
해당 코드를 아래와 같이 수정해주었더니 오류가 해결되었다 !!
@Repository
public interface UserRefreshTokenRepository extends JpaRepository<UserRefreshToken, Long> {
//UserID와 userID + Token 기준으로 찾음
UserRefreshToken findByUserId(String userId);
UserRefreshToken findByUserIdAndRefreshToken(String userId, String refreshToken);
}
PropertyReferenceException: No property found for type 오류는 사소한 오타로 인해 일어나는 경우가 많은 듯 하다 ...
(개인적인 주관입니다 ,,,)

'개발 > SpringBoot' 카테고리의 다른 글
[좋은 객체 지향 설계의 5원칙: SOLID] 객체지향과 스프링 (7) | 2024.11.06 |
---|---|
[Spring Boot] OAuth2 연동 중에 생긴 method filterchain in "" required a bean of type "" that could not be found.에러 (1) | 2024.02.09 |
[Spring Boot]org.springframework.beans.factory.BeanCreationException (0) | 2024.01.30 |
[Spring Boot] OAuth 2.0 KaKao 로그인을 위한 설정 (2) | 2024.01.17 |
[SpringBoot] 커넥션 풀의 이해 (2) | 2024.01.08 |