В моем репозитории мне нужно использовать Projection для метода findById:
@Repository
public interface ForumRepository extends CrudRepository<Forum,Integer> {
ForumDTO findById(Integer id);
}
Но поскольку findByID уже существует в CrudRepository, поэтому я не могу переопределить это с другим типом возврата, есть ли другой способ его заархивировать?
Я только что понял, что мне не нужно переопределять его, так как я могу просто использовать getBy вместо findBy:
public interface ForumRepository extends CrudRepository<Forum,Integer> {
ForumDTO getById(Integer id);
}
В качестве альтернативы вы можете обобщить метод и передать класс dto.
<T> T findById(Integer id, Class<T> type);
Это также работает с необязательным.
<T> Optional<T> findById(String id, Class<T> type);
Чтобы использовать это, вам нужно будет передать тип, который вы хотите вернуть.
ForumDTO forum = forumRepo.findById(378583, ForumDTO.class);
Источник: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projection.dynamic