Spring Data Rest中无法实例化Querydsl Predicate求助
问题:Spring尝试实例化Predicate接口导致异常,求HTTP参数绑定Predicate的配置
我搞不懂为什么Spring要尝试实例化我的Predicate接口,负责从HTTP参数绑定Predicate的配置是什么?
目前遇到的异常:
No primary or single unique constructor found for interface com.querydsl.core.types.Predicate
已经花了大量时间调试,恳请帮忙解决。以下是相关代码和配置:
控制器代码
@RepositoryRestController(path = "/samples") @RequiredArgsConstructor public class SamplesController { private final PageMapper pageMapper; private final SamplesRepository dao; @Secured("lab_sample_read") @GetMapping public PagedModel<Sample> samplesPage( SamplesFilter parameters, @QuerydslPredicate(root = Sample.class) Predicate predicate, Pageable pageable ) { Page<Sample> page = dao.findAll(parameters, predicate, pageMapper.zeroIndexed(pageable)); return PagedModel.of(page.getContent(), pageMapper.metaOneIndexed(page)); } }
配置属性
mvc.servlet.path: /labs
依赖配置(pom.xml)
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.4</version> </parent> <groupId>xxx</groupId> <artifactId>labs-application</artifactId> <name>Application</name> <description>Labs Application Module</description> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-resource-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <classifier>jakarta</classifier> <scope>provided</scope> </dependency> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> <classifier>jakarta</classifier> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> <!-- todo restore --> <!-- <dependency> --> <!-- <groupId>org.springdoc</groupId> --> <!-- <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> --> <!-- </dependency> --> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <testResources> <testResource> <directory>src/test/resources</directory> </testResource> </testResources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <addResources>true</addResources> </configuration> </plugin> <plugin> <groupId>com.mysema.maven</groupId> <artifactId>apt-maven-plugin</artifactId> <executions> <execution> <goals> <goal>process</goal> </goals> <configuration> <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor> </configuration> </execution> </executions> </plugin> </plugins> </build>
相关日志信息
日志显示Spring在处理请求参数解析时,尝试实例化com.querydsl.core.types.Predicate接口,找不到可用的构造函数,堆栈跟踪涉及org.springframework.web.method.annotation.ModelAttributeMethodProcessor等类的调用流程,核心异常信息为开头提到的构造函数找不到错误。
内容的提问来源于stack exchange,提问作者Cezary
相关产品推荐
相关产品推荐

