找不到具有根本原因的接口 org.springframework.data.jpa.domain.Specification] 的主构造函数或默认构造函数
No primary or default constructor found for interface org.springframework.data.jpa.domain.Specification] with root cause
我想实现 Spring 应用程序,该应用程序为包含页面的表提供服务:
[HPM] GET /api_admin/transactions/find?page=0&size=10
控制器:
@GetMapping("find")
public Page<PaymentTransactionsDTO> getAllBySpecification(
@And({
@Spec(path = "uniqueId", spec = LikeIgnoreCase.class),
@Spec(path = "createdAt", params = "from", spec = GreaterThanOrEqual.class, config="uuuu-MM-dd'T'HH:mm:ss.SSSX"),
@Spec(path = "createdAt", params = "to", spec = LessThanOrEqual.class, config="uuuu-MM-dd'T'HH:mm:ss.SSSX")
}) Specification<Transactions> specification,
@SortDefault(sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable
) {
return transactionService.getAllBySpecification(specification, pageable)
.map(g -> TransactionsDTO.builder()
.id(g.getId())
..............
.build()
);
}
Spring 存储库:
public Page<PaymentTransactions> getAllBySpecification(final Specification<PaymentTransactions> specification, final Pageable pageable) {
return this.dao.findAll(specification, pageable);
}
我正在尝试使用这个框架来实现搜索功能:https://github.com/tkaczmarzyk/specification-arg-resolver
我收到错误:
00:24:27.335 [http-nio-8020-exec-4] ERROR [dispatcherServlet][log:175] - Servlet.service() for servlet [dispatcherServlet] in context with path [/api_admin] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for interface org.springframework.data.jpa.domain.Specification] with root cause
java.lang.NoSuchMethodException: org.springframework.data.jpa.domain.Specification.<init>()
你知道我该如何解决这个问题吗?当我使用 Spring 部署到 JBoss 容器时,我工作正常,但现在当我使用 Spring 独立应用程序时,我可以出现此异常。
根据the spec,应将 SpecificationArgumentResolver 添加到 argumentResolvers
@Configuration
@EnableJpaRepositories
public class MyConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new SpecificationArgumentResolver());
}
...
}
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.List;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import net.kaczmarzyk.spring.data.jpa.web.SpecificationArgumentResolver;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@Configuration
@EnableJpaRepositories
public class MyConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argument Resolvers) {
argumentResolvers.add(new SpecificationArgumentResolver());
}
}
我想实现 Spring 应用程序,该应用程序为包含页面的表提供服务:
[HPM] GET /api_admin/transactions/find?page=0&size=10
控制器:
@GetMapping("find")
public Page<PaymentTransactionsDTO> getAllBySpecification(
@And({
@Spec(path = "uniqueId", spec = LikeIgnoreCase.class),
@Spec(path = "createdAt", params = "from", spec = GreaterThanOrEqual.class, config="uuuu-MM-dd'T'HH:mm:ss.SSSX"),
@Spec(path = "createdAt", params = "to", spec = LessThanOrEqual.class, config="uuuu-MM-dd'T'HH:mm:ss.SSSX")
}) Specification<Transactions> specification,
@SortDefault(sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable
) {
return transactionService.getAllBySpecification(specification, pageable)
.map(g -> TransactionsDTO.builder()
.id(g.getId())
..............
.build()
);
}
Spring 存储库:
public Page<PaymentTransactions> getAllBySpecification(final Specification<PaymentTransactions> specification, final Pageable pageable) {
return this.dao.findAll(specification, pageable);
}
我正在尝试使用这个框架来实现搜索功能:https://github.com/tkaczmarzyk/specification-arg-resolver
我收到错误:
00:24:27.335 [http-nio-8020-exec-4] ERROR [dispatcherServlet][log:175] - Servlet.service() for servlet [dispatcherServlet] in context with path [/api_admin] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for interface org.springframework.data.jpa.domain.Specification] with root cause
java.lang.NoSuchMethodException: org.springframework.data.jpa.domain.Specification.<init>()
你知道我该如何解决这个问题吗?当我使用 Spring 部署到 JBoss 容器时,我工作正常,但现在当我使用 Spring 独立应用程序时,我可以出现此异常。
根据the spec,应将 SpecificationArgumentResolver 添加到 argumentResolvers
@Configuration
@EnableJpaRepositories
public class MyConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new SpecificationArgumentResolver());
}
...
}
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.List;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import net.kaczmarzyk.spring.data.jpa.web.SpecificationArgumentResolver;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@Configuration
@EnableJpaRepositories
public class MyConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argument Resolvers) {
argumentResolvers.add(new SpecificationArgumentResolver());
}
}