Предусматривает ли Spring Data преднамеренные неизвестные токены при генерации запросов из имен методов? - PullRequest
1 голос
/ 30 января 2020

В одном из моих репозиториев Spring Data я хотел иметь два автоматически сгенерированных метода для поиска одного экземпляра по идентификатору: один возвращает полную сущность (Student), а другой - более тонкий прогноз (StudentView). Теперь, очевидно, Java не позволит мне иметь два метода, которые отличаются только типом возвращаемого значения:

Optional<Student> findById(String id);
Optional<StudentView> findById(String id);

Я мог бы назвать один из методов любым другим, который я хотел, и вручную предоставить ему требуемый запрос через аннотацию @Query, но я хотел использовать автогенерацию имени метода. Теперь Spring Data допускает некоторую гибкость в том, как он анализирует имя метода, и поэтому я мог бы назвать один из методов как (скажем) findOneById(), чтобы отличить guish от другого, но это не Я чувствую себя хорошо. Однако в ходе экспериментов я обнаружил, что могу назвать второй метод findViewById(), который содержит токен View, который не является одним из ключевых слов, известных анализатору имени метода:

Optional<Student> findById(String id);
Optional<StudentView> findViewById(String id);

Умышленно ли это разрешает анализатор имени метода (я не могу найти упоминания об этом в документации), или я просто использую случайную реализацию?

1 Ответ

0 голосов
/ 31 января 2020

Это выглядит странно, но в Spring-Boot 2.2.2.RELEASE вы можете использовать любое слово между find и ById.

Optional<Student> findWhateverById(Long Id) вернет запись таблицы student с предоставленной id.

Либо я что-то упустил, либо это действительно ошибка.

...