В одном из моих репозиториев 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);
Умышленно ли это разрешает анализатор имени метода (я не могу найти упоминания об этом в документации), или я просто использую случайную реализацию?