복붙노트

[SPRING] 사용자 지정 리포지토리 기본 클래스 + QueryDslPredicateExecutor

SPRING

사용자 지정 리포지토리 기본 클래스 + QueryDslPredicateExecutor

나는 상용구를 줄이는데 매우 유용한 QueryDslPredicateExecutor를 찾았지만 원숭이 렌치를 던져 넣은 것으로 보인다. 저는 이제 JpaRepository를 커스텀 기본 클래스 저장소로 확장하려고하고 있습니다. 그리고 시작시 Spring은 저장소를 정확하게 인스턴스화하는 데 어려움을 겪고 있습니다.

//Custom base class
@NoRepositoryBean
public interface IdAwareRepository<A, ID extends Serializable> extends JpaRepository<A, ID> {
    // ID getId(A a);
}

// Base class implementation
public class IdAwareRepositoryImpl<A, ID extends Serializable>
    extends SimpleJpaRepository<A, ID> implements IdAwareRepository<A, ID>  {
    public IdAwareRepositoryImpl(JpaEntityInformation<A, ?> entityInformation, EntityManager entityManager) {
        super(entityInformation, entityManager);
    }
}

// Individual repo
@Repository
public interface MyPojoRepository extends JpaRepository<MyPojo, Integer>, QueryDslPredicateExecutor<MyPojo> {
}

// Spring boot main application class
@EnableJpaRepositories(repositoryBaseClass = IdAwareRepositoryImpl.class)
@EntityScan(basePackageClasses = {Application.class,   Jsr310JpaConverters.class})
@EnableAutoConfiguration(exclude = {
      org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
      org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class})
@SpringBootApplication
public class Application {}

이 주제에 대해 여러 가지 변형을 시도했지만, 성공적으로 유선을 구축하는 데 운이 없었습니다. 나는 Spring의 이슈 트래커 인 https://jira.spring.io/browse/DATAJPA-674에서 유사한 문제를 발견했지만, 수정에 대한 설명은 없었으며, 그 코드는 작업하기 쉽도록 리팩터링되었다.

다음과 같은 오류가 발생합니다.

나에게 Spring이 JpaRepository에 대한 커스텀 기본 클래스와 QueryDslPredicateExecutor 확장 모두를 유선화할 수 없다고 말한다.

해결법

  1. ==============================

    1.내베이스 저장소에서 QueryDslMongoRepository를 확장하여 유사한 문제를 해결했습니다. 유사한 클래스를 확장 할 수 있습니다.

    내베이스 저장소에서 QueryDslMongoRepository를 확장하여 유사한 문제를 해결했습니다. 유사한 클래스를 확장 할 수 있습니다.

    "유형에 대한 속성이 없습니다"... MongoDB 및 Spring-Data에서 QueryDslPredicateExecutor를 사용할 때

  2. from https://stackoverflow.com/questions/36293960/custom-repository-base-class-querydslpredicateexecutor by cc-by-sa and MIT license