SpringBoot Couchbase集成

SpringBoot Couchbase集成,spring,spring-boot,couchbase,spring-data-couchbase,Spring,Spring Boot,Couchbase,Spring Data Couchbase,我想使用QueryDslPredicateExecutor接口为我的UserTask实体创建一个可筛选列表,这样查询字符串中给定的参数将自动处理为谓词 我有以下类/接口 public interface UserTaskQuerydslRepository extends CrudRepository<UserTask, String>, QueryDslPredicateExecutor<UserTask>, QuerydslBinderCustomizer&

我想使用QueryDslPredicateExecutor接口为我的UserTask实体创建一个可筛选列表,这样查询字符串中给定的参数将自动处理为谓词

我有以下类/接口

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

    @Override
    default void customize(QuerydslBindings bindings, QUserTask userTask) {
        ...
    }
}
如果我用@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);
    }

}
@Generated(“com.mysema.query.codegen.EntitySerializer”)
公共类QUserTask扩展EntityPathBase{
私有静态最终长serialVersionUID=4934469L;
公共静态最终QUserTask userTask=新QUserTask(“userTask”);
公共最终StringPath id=createString(“id”);
...
公共QUserTask(字符串变量){
super(UserTask.class,forVariable(variable));
}
公共QUserTask(路径元数据){
super(UserTask.class,元数据);
}
}
为了生成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>

com.mysema.maven
aptmaven插件
1.1.3
过程
目标/生成源/apt
com.mysema.query.apt.jpa.JPAAnnotationProcessor
com.mysema.query.apt.querySlanNotationProcessor
com.mysema.querydsl
querydsl公寓
3.4.3
在这个项目中,我们有JPA实体和couchbase实体,这就是为什么我在那里有JPAAnnotationProcessor

如果像这样运行应用程序,则会出现以下错误:

org.springframework.data.mapping.PropertyReferenceException:否 为UserTask类型找到属性findAll

我试图用@NoRepositoryBean注释我的UserTaskQuerydslRepository,它解决了我的findAll问题,但是当我试图@injectthisrepository到一个资源(或控制器,JHipster称之为Resource)时,我得到了以下错误

没有类型为[.UserTaskQuerydslRepository]的合格bean 为依赖项找到:至少需要1个符合以下条件的bean 此依赖项的自动连线候选项。依赖项批注: {@javax.inject.inject()}


谁能帮我一下我做错了什么?

正如@mp911de在他的评论中所说,Spring Data Couchbase不支持
QueryDsl
,这解释了为什么不能创建bean

我能看出你读医生时的困惑。第5章是所有Spring数据存储实现的通用内容。所有的存储文档都有一章有相同的内容,这一章通常讨论存储库的基础知识。因此,它可以提及不在特定实现中的内容

您链接的部分的第一句话甚至暗示:

几个Spring数据模块通过Querydsl谓词执行器提供与Querydsl的集成


不幸的是,有几个,但不是Spring Data Couchbase模块。

正如@mp911de在他的评论中所说,Spring Data Couchbase不支持
QueryDsl
,这解释了为什么不能创建bean

我能看出你读医生时的困惑。第5章是所有Spring数据存储实现的通用内容。所有的存储文档都有一章有相同的内容,这一章通常讨论存储库的基础知识。因此,它可以提及不在特定实现中的内容

您链接的部分的第一句话甚至暗示:

几个Spring数据模块通过Querydsl谓词执行器提供与Querydsl的集成


不幸的是,有几个,但不是Spring数据Couchbase模块。

2016。711. : 经过一些研究,根据@mp911de和@simon baslé的回答,我们知道Spring Data Couchbase还不支持QueryDsl。

我找到了一个解决我想要解决的问题的方法(动态查询,也称为列表上的过滤器,并使其可分页)


2016年。711. : 经过一些研究,根据@mp911de和@simon baslé的回答,我们知道Spring Data Couchbase还不支持QueryDsl。

我找到了一个解决我想要解决的问题的方法(动态查询,也称为列表上的过滤器,并使其可分页)


Spring Data Couchbase不支持QueryDsl,因此存储库不能作为bean实现,因此Spring不能注入存储库bean。理论上,它具有Spring配置的外观?也许你有多个Spring上下文?您还可以通过查看日志来验证是否创建了存储库bean。Spring Data Couchbase不支持QueryDsl,因此存储库无法作为bean实现,因此Spring无法注入存储库bean。理论上,它具有Spring配置的外观?也许你有多个Spring上下文?您还可以通过查看日志来验证是否创建了存储库bean。请看一看,如果您发现它有用,请在SpringDataCouchbase中使用它。还是这样吗?或者支持现在已经扩展到Couchbase存储库了吗?我制作了一个库来构建动态N1QL查询。请看一看,如果您发现它有用,请在SpringDataCouchbase中使用它。还是这样吗?或者支持现在已经扩展到Couchbase存储库了吗?
<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>