0

我有一个很奇怪的问题。在我的存储库中,我需要扩展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班级没有计数属性。当我JpaSpecificationExecutor从存储库中删除时,一切正常。

4

1 回答 1

1

我遇到了同样的例外。就我而言,原因是 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 会尝试通过根据其名称结构创建查询来构建查询......在这种情况下是名称片段针对您的实体属性进行测试。

于 2012-09-05T10:56:43.447 回答