Как переопределить findById с помощью проекции в Spring Data

В моем репозитории мне нужно использовать Projection для метода findById:

@Repository
public interface ForumRepository extends CrudRepository<Forum,Integer> {
        ForumDTO findById(Integer id);
}

Но поскольку findByID уже существует в CrudRepository, поэтому я не могу переопределить это с другим типом возврата, есть ли другой способ его заархивировать?

1
0
3 150
2

Ответы 2

Я только что понял, что мне не нужно переопределять его, так как я могу просто использовать 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

Другие вопросы по теме