Не удается создать собственный метод запроса в репозитории данных 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: не найдено свойство findFriends для типа Friend! в org.springframework.data.mapping.PropertyPath.(PropertyPath.java:77) в org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:329) в org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:309) в org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:272) в org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243) в org.springframework.data.repository.query.parser.Part.(Part.java:76) в org.springframework.data.repository.query.parser.PartTree$OrPart.(PartTree.java:247) в org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:398) в org.springframework.data.repository.query.parser.PartTree$Predicate.(PartTree.java:378) в org.springframework.data.repository.query.parser.PartTree.(PartTree.java:86) в org.springframework.data.jpa.repository.query.PartTreeJpaQuery.(PartTreeJpaQuery.java:70) ... 43 общих кадра опущено

1 ответ

Решение

Возможно, вы неправильно называете свой класс реализации.

Обратите внимание, что ожидания по присвоению имен изменились в Spring Data 2.0.

Для < 2.0 реализация должна была быть названа как окончательный интерфейс хранилища с дополнительным Impl суффикс. См. Соответствующую справочную документацию для примера.

Для>= 2.0 реализация должна быть названа как пользовательский интерфейс с дополнительным Impl суффикс. См. Текущую справочную документацию для примера.

Примечание: вам не нужно @Repository аннотаций.

Другие вопросы по тегам