Error creating bean with name 'querydslPredicateArgumentResolver'

DongHyun Kim·2023년 8월 20일
0

에러 발생 원인 ❗
Querydsl 빈을 생성하는데 문제가 발생했다 (다양한 원인 존재)

나의 경우 JpaRepository 와 함께 Querydsl 을 이용한 CustomRepostitory 를 상속 받도록 만들다 발생했다.

구현 클래스와 인터페이스의 이름을 맞추지 않아서 빈 생성할 때 꼬였나보다.

public interface MyItemRepository {

    List<Item> findAll(ItemSearchCond cond);

    void update(Long itemId, ItemUpdateDto updateParam);
}

아래 코드가 문제 발생했던 원인!

@Transactional
public class MyRepositoryImpl implements MyItemRepository {
	...
}

해결: MyRepositoryImpl -> MyItemRepositoryImpl 로 바꿔서 구현 클래스와 인터페이스가 이름이 일치하도록 만들어주자

public interface JpaItemRepository extends MyItemRepository, JpaRepository<Item, Long> {

    Optional<Item> findById(Long id);

}

위에 문제 말고도 CustomRepository 의 끝 (접미사) 을 Impl 로 맞추지 않아서 발생하기도 한다.

전체 에러 내용은 다음과 같다
(하나가 꼬이니까 뒤에 모든 빈 생성이 꼬여서 오류가 복잡하다)

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'querydslPredicateArgumentResolver' defined in class path resource [org/springframework/data/web/config/QuerydslWebConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.web.querydsl.QuerydslPredicateArgumentResolver]: Factory method 'querydslPredicateArgumentResolver' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'querydslBindingsFactory' defined in class path resource
[org/springframework/data/web/config/QuerydslWebConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaItemRepository' defined in hello.itemservice.repository.custom.JpaItemRepository 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 hello.itemservice.repository.custom.MyItemRepository.findAll(hello.itemservice.repository.ItemSearchCond)! Reason: Failed to create query for method public abstract java.util.List hello.itemservice.repository.custom.MyItemRepository.findAll(hello.itemservice.repository.ItemSearchCond)! No property 'findAll' found for type 'Item'!; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List hello.itemservice.repository.custom.MyItemRepository.findAll(hello.itemservice.repository.ItemSearchCond)! No property 'findAll' found for type 'Item'!

profile
do programming yourself

0개의 댓글