2012-07-16 65 views
0

我有很奇怪的問題。在我的存儲庫中,我需要擴展JpaSpecificationExecutor<T>接口,以便能夠使用findAll(Specification<T>, Pageable)進行自定義查詢分頁。SpringData擴展JpaSpecificationExecutor錯誤

但是,當我使用JpaSpecificationExecutor,

public interface DescriptionRepository extends ParentRepositoryCustom<Description, Long>, 
     JpaSpecificationExecutor<Description> { 

} 

應用程序不需額外的構建,拋出No property count found for type class Description例外。我的Description類沒有count屬性。當我從存儲庫中刪除JpaSpecificationExecutor時,一切都很順利。

回答

0

我遇到了同樣的異常。在我的情況下,原因是ParentRepositoryImpl不正確地執行SimpleJpaRepository 這是JpaSpecificationExecutor的實現。因此,當Spring嘗試解析查詢名稱時,它將排除屬於Spring調用實現的repositoryBaseClass的方法名稱。 IT方面的類org.springframework.data.repository.core.support.DefaultRepositoryInformation

public boolean isBaseClassMethod(Method method) { 
    return isTargetClassMethod(method, repositoryBaseClass); 
} 

檢查repositoryBaseClass是你期望的。它應該定義「count」方法。

如果不擴展正確的父類,方法(在你的情況「計數」)不排除形式的分辨率和Spring試圖通過根據其名稱結構創造它來建立一個查詢......並且在名稱的案例片段將根據您的實體屬性進行測試。