SpringBoot Couchbase集成
我想使用QueryDslPredicateExecutor接口为我的UserTask实体创建一个可筛选列表,这样查询字符串中给定的参数将自动处理为谓词 我有以下类/接口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&
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>