2016-07-01 10 views
2

쿼리 문자열에 주어진 매개 변수가 술어로 자동 처리되도록 QueryDslPredicateExecutor 인터페이스로 UserTask 엔터티의 필터링 가능한 목록을 만들고 싶습니다.SpringBoot Couchbase 통합

나는이 다음의 클래스/인터페이스

public interface UserTaskQuerydslRepository extends CrudRepository<UserTask, String>, 
    QueryDslPredicateExecutor<UserTask>, QuerydslBinderCustomizer<QUserTask> { 

    @Override 
    default void customize(QuerydslBindings bindings, QUserTask userTask) { 
     ... 
    } 
} 
다음 메이븐은 QUserTask 클래스를 생성 내가 @QueryEntity이 클래스에 주석을 경우 UserTask이 (카우치베이스 주식회사)를 나타냅니다 내 수업 모델

@QueryEntity 
@Document(expiry = 0) 
public class UserTask { 

    @Id 
    private String id; 

    ... 
} 

입니다

나를 위해

@Generated("com.mysema.query.codegen.EntitySerializer") 
public class QUserTask extends EntityPathBase<UserTask> { 

    private static final long serialVersionUID = 493434469L; 

    public static final QUserTask userTask = new QUserTask("userTask"); 

    public final StringPath id = createString("id"); 

    ... 

    public QUserTask(String variable) { 
     super(UserTask.class, forVariable(variable)); 
    } 

    public QUserTask(Path<? extends UserTask> path) { 
     super(path.getType(), path.getMetadata()); 
    } 

    public QUserTask(PathMetadata<?> metadata) { 
     super(UserTask.class, metadata); 
    } 

} 

나는 QUOSTask를 생성하기 위해 다음을 추가했다. 날개 라인은 내가 거기 JPAAnnotationProcessor을 가지고 그 이유는, 우리가 JPA 엔티티와 카우치베이스 주식회사 엔티티 모두이 프로젝트에

<plugin> 
    <groupId>com.mysema.maven</groupId> 
    <artifactId>apt-maven-plugin</artifactId> 
    <version>1.1.3</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>process</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>target/generated-sources/apt</outputDirectory> 
       <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor> 
       <processor>com.mysema.query.apt.QuerydslAnnotationProcessor</processor> 
      </configuration> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>com.mysema.querydsl</groupId> 
      <artifactId>querydsl-apt</artifactId> 
      <version>3.4.3</version> 
     </dependency> 
    </dependencies> 
</plugin> 

을의 pom.xml합니다.

나는 다음과 같은 오류가 같은 응용 프로그램을 실행하는 경우 :

나는 @NoRepositoryBean 내 UserTaskQuerydslRepository 주석을 시도

org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type UserTask!

, 그것은 내 findall은 문제를 해결,하지만 난에이 저장소를 @Inject하려고 할 때 자원 (또는 컨트롤러는 JHipster는 자원을 호출) 내가받을 다음과 같은 오류

No qualifying bean of type [.UserTaskQuerydslRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}

사람이 내가 잘못 했습니까 걸 도와 드릴까요?

+0

봄 데이터 카우치베이스 주식회사는 따라서 저장소를 더 QueryDsl 지원이 없습니다 빈으로 구현 될 수 없으므로 Spring은 저장소 빈을 삽입 할 수 없다. – mp911de

+0

이론적으로 http://docs.spring.io/spring-data/couchbase/docs/current/reference/html/#core.extensions.querydsl – aBnormaLz

+0

Spring 구성은 어떻게됩니까? 여러 개의 Spring 컨텍스트가있을 수 있습니까? 또한 로그를 검토하여 저장소 빈이 작성되는지 확인할 수 있습니다. – Jeremy

답변

3

@ mp911de는 그의 의견에서 스프링 데이터 Couchbase는 QueryDsl을 지원하지 않기 때문에 Bean을 만들 수없는 이유가 설명됩니다.

문서를 읽을 때 혼동이 어디서 발생했는지 알 수 있습니다. 5 장은 모든 Spring 데이터 저장소 구현에 공통된 내용입니다. 모든 상점 문서에는 동일한 내용의 장이 하나 있는데, 일반적으로 저장소의 기본 사항에 대해 설명합니다. 따라서 특정 구현에없는 것을 언급 할 수 있습니다.

당신도 링크 섹션의 첫 번째 문장 그것을 힌트 : 여러

Several Spring Data modules offer integration with Querydsl via QueryDslPredicateExecutor.

,하지만 봄 데이터 카우치베이스 주식회사 모듈 불행히도.

+0

동적 인 N1QL 쿼리를 작성하기위한 lib를 만들었습니다. 한번보세요. 유용하다고 생각하시면 spring-data-couchbase에서 자유롭게 사용하십시오. https://github.com/TeamWanari/couchbase-query-executor – aBnormaLz

2

2016. 07. 11. : 약간의 조사와 @ mp911de 및 @ simon-baslé의 답변에 따라 Spring Data Couchbase는 아직 QueryDsl을 지원하지 않는다는 것을 알고 있습니다.

나는 (목록에. 필터를 일명, 동적 쿼리를하고 페이징하게) 내가 해결하고 싶은 문제에 대한 해결 방법을 찾을

https://github.com/TeamWanari/couchbase-query-executor