Определите репозиторий JPA в тестовой папке Spring - PullRequest
3 голосов
/ 28 апреля 2020

Я создаю библиотеку Spring и для ее тестирования мне нужно иметь сущности и репозитории, которые определены только для тестовой папки .

Когда я создаю репозиторий , он работает хорошо, но как только я добавляю к нему пользовательский запрос, у меня появляется ошибка :

Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List package.ExampleRepository.getAll()! No property getAll found for type Example!

Вот структура моей тестовой папки:

test
  package
    Application (@SpringBootApplication)
    Example (@Entity)
    ExampleRepository (@Repository)
    Test (@SpringBootTest)

Вот содержимое репозитория:

@Repository
public interface ExampleRepository extends JpaRepository<Example, Long> {
    List<Example> getAll();
}

Спасибо за помощь

1 Ответ

2 голосов
/ 29 апреля 2020

Из Spring Data JPA - Справочная документация: Создание запроса Документы:

Механизм построения запросов, встроенный в инфраструктуру репозитория Spring Data, полезен для создания ограничивающих запросов над объектами объекта. репозиторий. Механизм удаляет префиксы find…By, read…By, query…By, count…By и get…By из метода и начинает анализировать остальную часть.

getAll() не подходит для этой схемы именования. countAll() не так хорошо. Тогда вы можете спросить, почему findAll() работает, или даже getOne(ID) в этом отношении. Методы findAll(), getOne(ID) (и другие подобные existsById(ID), deleteAll()) определены в CrudRepository и , вероятно , разрешенных дополнительными реализациями средства разрешения запросов.

public interface ExampleRepository extends JpaRepository<Example, Long> {

    // valid (resolvable)
    List<Example> findAll();

    //invalid (un-resolvable)
    List<Example> getAll();

    // valid
    Example getOne(Long id);

    // valid
    List<Example> getByName(String name);

    // invalid
    long countAll();

    //valid
    long countByName(String name);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...