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のクラスには count 属性がありません。JpaSpecificationExecutorリポジトリから削除すると、すべてが再び正常に機能します。

4

1 に答える 1

1

同じ例外に遭遇しました。私の場合、その理由は、ParentRepositoryImpl が JpaSpecificationExecutor の実装である SimpleJpaRepository を正しく拡張していなかったためです。そのため、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 に答える