【发布时间】:2020-06-16 04:34:24
【问题描述】:
我正在尝试创建一个使用 Spring Data QueryDSL 的控制器。
我的控制器如下所示:
@GetMapping("/playerAccount")
public Iterable<PlayerAccount> getPlayerAccounts(com.querydsl.core.types.Predicate predicate) {
return repository.findAll(predicate);
}
我的实体是(为简洁起见)
@Entity
public class PlayerAccount {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
当我调用 GET /playerAccount API 时,我收到异常 IllegalStateException “No primary or default constructor found for interface com.querydsl.core.types.Predicate”(由 org.springframework.web.method.annotation.ModelAttributeMethodProcessor 抛出#createAttribute)。
可能出了什么问题?
谢谢
编辑:
我的 pom.xml 包含
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
和
<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</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
我没有@EnableSpringDataWebSupport,但我必须有一个等价物。
【问题讨论】:
-
你能粘贴谓词模型的代码吗?谓词模型需要是DAO,并且需要有一个以@Id作为主键注释的字段。
-
请看我的编辑。
-
从日志中可以清楚地看到问题 - 您的谓词类没有默认构造函数。
-
对不起,我不明白这意味着什么。我的谓词类是什么? Predicate 类不是我的,它来自 com.querydsl.core.types
标签: java spring rest spring-data-jpa querydsl