1

QueryDslPredicateExecutor インターフェースを使用して UserTask エンティティのフィルター可能なリストを作成したいので、クエリ文字列で指定されたパラメーターは Predicate に自動処理されます。

私は次のクラス/インターフェースを持っています

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

    @Override
    default void customize(QuerydslBindings bindings, QUserTask userTask) {
        ...
    }
}

UserTask は、(couchbase) モデルを表す私のクラスです

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

    @Id
    private String id;

    ...
}

このクラスに @QueryEntity で注釈を付けると、Maven が QUserTask クラスを生成します

@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);
    }

}

QUserTask を生成するために、次の行を pom.xml に追加しました

<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>

プロジェクトには、JPAエンティティとcouchbaseエンティティの両方があります。そのため、そこにJPAAnnotationProcessorがあります。

このようにアプリケーションを実行すると、次のエラーが発生します。

org.springframework.data.mapping.PropertyReferenceException: タイプ UserTask のプロパティ findAll が見つかりません!

UserTaskQuerydslRepository に @NoRepositoryBean で注釈を付けようとしましたが、findAll の問題は解決しましたが、このリポジトリをリソース (またはコントローラー、JHipster はそれをリソースと呼びます) に @Inject しようとすると、次のエラーが発生します。

依存関係のタイプ [.UserTaskQuerydslRepository] ​​の適格な Bean が見つかりません: この依存関係のオートワイヤー候補として適格な Bean が少なくとも 1 つ必要です。依存関係の注釈: {@javax.inject.Inject()}

誰が私が間違ったことを助けてくれますか?

4

2 に答える 2

2

2016. 07. 11. : いくつかの調査の後、@mp911de と @simon-baslé による回答によると、Spring Data Couchbase はまだ QueryDsl をサポートしていないことがわかりました。

解決したい問題の回避策を見つけました(動的クエリ、別名、リストをフィルターしてページング可能にする)

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

于 2016-07-11T09:43:07.110 に答える