Не удается создать собственный метод запроса в репозитории данных 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
аннотаций.