web-dev-qa-db-ja.com

Springデータリポジトリにカスタムクエリメソッドを作成できません

カスタムリポジトリを作成したかった:

public interface FriendRepositoryCustom {

    Page<Friend> findFriends(FriendCriteria friendCriteria, Pageable pageable);
}

そしてその実装:

@Repository
@Transactional(readOnly = true)
public class FriendRepositoryCustomImpl implements FriendRepositoryCustom {

    @PersistenceContext
    EntityManager entityManager;

    @Override
    public Page<Friend> findFriends(FriendCriteria friendCriteria, Pageable pageable) {
    ...
    }

そしてそれをメインリポジトリに追加しました:

@Repository
public interface FriendRepository extends JpaRepository<Friend, Long>, JpaSpecificationExecutor<Friend>, FriendRepositoryCustom {

}

アプリケーションを起動すると、このエラーが発生します:

原因:org.springframework.data.mapping.PropertyReferenceException:タイプFriendのプロパティfindFriendsが見つかりません! at org.springframework.data.mapping.PropertyPath。(PropertyPath.Java:77)at org.springframework.data.mapping.PropertyPath.create(PropertyPath.Java:329)at org.springframework.data.mapping.PropertyPath.create( PropertyPath.Java:309)at org.springframework.data.mapping.PropertyPath.from(PropertyPath.Java:272)at org.springframework.data.mapping.PropertyPath.from(PropertyPath.Java:243)at org.springframework.data .repository.query.parser.Part。(Part.Java:76)at org.springframework.data.repository.query.parser.PartTree $ OrPart。(PartTree.Java:247)at org.springframework.data.repository.query .parser.PartTree $ Predicate.buildTree(PartTree.Java:398)at org.springframework.data.repository.query.parser.PartTree $ Predicate。(PartTree.Java:378)atorg.springframework.data.repository.query。 parser.PartTree。(PartTree.Java:86)at org.springframework.data.jpa.repository.query.PartTreeJpaQuery。(PartTreeJpaQuery.Java:70)... 43個の共通フレームが省略されています

6
user3364181

実装クラスの名前が間違っている可能性があります。

Spring Data2.0では名前の期待が変わったことに注意してください。

<2.0の場合、実装は、追加のImplサフィックスが付いた最終的なリポジトリインターフェイスとして名前を付ける必要がありました。 例については、一致するリファレンスドキュメントを参照してください

> = 2.0の場合、実装には、追加のImplサフィックスが付いたカスタムインターフェイスとして名前を付ける必要があります。 例については現在のリファレンスドキュメントを参照してください

注:@Repositoryアノテーションは必要ありません。

11
Jens Schauder