기존 project에 Querydsl 적용 문제입니다
1451
작성한 질문수 13
기존에 작성하던 코드에 querydsl을 붙였는데 문제가 뜨네요..
빈 프로젝트 test코드에선 잘 작동하였는데
UnsatisfiedDependencyException이 계속 뜨네요..
jparepository에 extend 하는 순간에 에러가 뜹니다.
커스텀 파일 (PostRepositoryCustom,PostRepositoryImpl)
두 클래스만 연결하고 run을 돌렸을땐 에러가 안뜹니다.
그런데, jpa repository을 상속받은 PostRepository에 extend로 PostRepositoryCustom을 연결해주는 순간 저렇게 에러가 뜨네요...
구글링해봐도 이유를 모르겠습니다 제발 도와주세요

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'likeController' defined in file [E:\dev\spring\week6\final\build\classes\java\main\com\example\soldapple\like\controller\LikeController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'likeService' defined in file [E:\dev\spring\week6\final\build\classes\java\main\com\example\soldapple\like\service\LikeService.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'postRepository' defined in com.example.soldapple.post.repository.PostRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.List com.example.soldapple.quarydsl.PostRepositoryCustom.findAllMyTest(); Reason: Failed to create query for method public abstract java.util.List com.example.soldapple.quarydsl.PostRepositoryCustom.findAllMyTest()! No property 'findAllMyTest' found for type 'Post'; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List com.example.soldapple.quarydsl.PostRepositoryCustom.findAllMyTest()! No property 'findAllMyTest' found for type 'Post'
답변 1
0
안녕하세요. S-J L님, 공식 서포터즈 y2gcoder입니다.
해당 에러 로그만 봤을 때는 에러 원인 분석을 위해 PostRepositoryImpl 코드와 Post 의 코드가 필요합니다.
Failed to create query for method public abstract java.util.List com.example.soldapple.quarydsl.PostRepositoryCustom.findAllMyTest()! No property 'findAllMyTest' found for type 'Post'
여기서 Post 엔티티에 findAllMyTest 프로퍼티를 찾을 수 없다고 나오는데, PostRepositoryImpl에서 post 객체를 어떻게 사용하고 있는지 알아야 도와드릴 수 있을 것 같습니다.
감사합니다.
0

김영한님 강의 예제와 유사하게 작성하였습니다.
그런데, imple 위에 @Component를 넣으니 run이 일단 무리 없이 되는데 왜 이런건지 설명 부탁드려도 될까요 ??
0
말씀해주신 것만 봤을 때는 사용자 정의 리포지토리 처럼 인식한 게 아니라 따로 분리해서 만든 Querydsl 리포지토리 처럼 등록된 것 같습니다. 저기에 @Repository를 붙여도 똑같이 작동할 것 같습니다.
보여주신 예외와 일부 코드만 가지고 판단해봤을 때는
https://velog.io/@byeongju/JPA-Failed-to-create-query-for-method-public-abstract
와 같이 JpaRepository에서 자동으로 쿼리를 만드는 기능과 직접 만드신 Querydsl 부분이 충돌난 것 같습니다.
그래서 따로 빈으로 등록해서 사용할 때는 정상적으로 작동한 것 같습니다.
위에 에러로그대로라면 findAllMyTest 부분이 의심스러운데 메서드명을 혹시 아예 다른 것으로 바꿔도 예외가 발생할까요?
0
방금 테스트해보니 메서드명을 바꾸고 @Component 어노테이션을 떼니 오류가 나네요
@ Component를 붙이면 다시 되구요.
그런데 실질적으로 저 인터페이스와 구현체들을 상속받아서 service단에서
postRepository.findAllMyTest(~) 로 사용을 해도 작동에는 무리가 없네요
혹시 @Component를 계속 다는 형태로 코드를 작성하는게 추후에 비효율적인 문제를 야기시킬까요?
그렇지만 않으면 일단 이런 방식으로 해볼려고 합니다 ㅠㅠ
0
혹시 @Component 대신에 @Repository를 달아도 오류가 나시나요?
오류가 발생하지 않는다면 @Repository를 붙이고 하시길 추천드립니다. 제가 전체코드를 볼 수 없어 확답을 드릴 수 없지만, 현재 방식이 Querydsl용 Repository를 따로 만들어 사용하는 방식과 유사하게 작동하고 있는 것이라 보입니다. 실제로 JPARepository 인터페이스에 사용자 정의 리포지토리를 만들지 않고 따로 Querydsl 용 Repository를 만들어 사용하시는 분들도 있어서 상관 없을 것 같습니다.
@Repository로 붙여달라고 말씀드리는 이유는 좀 더 명확하게 역할을 표현하기 위해 + 데이터베이스 플랫폼 별로 오는 예외를 추상화해주기 때문입니다.
SpringBoot 4.X에서의 Querydsl 설정
0
109
2
querydsl 오픈소스에 대한 질문
1
84
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
115
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
329
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
73
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
164
1
querydsl sum() 메서드 없어요.
0
163
2
build 디렉터리 생성
0
142
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
116
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
95
1
오타 제보 드립니다.
0
74
2
벌크 연산과 flush, clear
0
78
1
Run As Intellij 로 변경시 Q타입 import 불가
0
90
1
QHello import하기 문제 발생
0
150
2
등록된 함수 보는법(H2Dialect) 질문
0
70
2
5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의
1
201
2
[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??
1
204
1
querydsl 설정 문제
0
223
2
quey dsl 설정부분
0
159
2
count 쿼리 관련 질문입니다!
0
75
1
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
0
90
1
답변부탁드리겠습니다.
0
91
2
(OrderSpecifier)관련 내용 어디있을가요
0
67
1
중급문법 벌크연산에서
0
84
2





