我有一个非常奇怪的问题。在我的存储库中,我需要扩展JpaSpecificationExecutor<T>
接口,以便能够使用findAll(Specification<T>, Pageable)
进行自定义查询分页。
但是,当我使用JpaSpecificationExecutor时,
public interface DescriptionRepository extends ParentRepositoryCustom<Description, Long>,
JpaSpecificationExecutor<Description> {
}
应用程序不会构建,抛出No property count found for type class Description
异常。
我的Description
类没有count属性。当我从存储库中删除JpaSpecificationExecutor
时,一切都运行良好。
答案 0 :(得分:0)
我遇到了同样的例外。在我的情况下,原因是 ParentRepositoryImpl没有正确地执行SimpleJpaRepository 这是JpaSpecificationExecutor的一个实现。 因此,当Spring尝试解析查询名称时,它会排除属于Spring调用实现的repositoryBaseClass的方法名称。它在类org.springframework.data.repository.core.support.DefaultRepositoryInformation
中public boolean isBaseClassMethod(Method method) {
return isTargetClassMethod(method, repositoryBaseClass);
}
检查repositoryBaseClass是否符合预期。它应该定义“计数”方法。
如果你没有扩展正确的超类,那么方法(在你的情况下为“count”)不会被排除在表单解析之外,Spring会尝试通过根据其名称结构创建查询来构建查询...在这种情况下名称片段将针对您的实体属性进行测试。