如何在Spring Data中使用投影覆盖findById

时间:2018-04-05 10:01:14

标签: spring spring-data spring-data-jpa

在我的存储库中,我需要使用Projection作为findById方法:

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

但是由于findByID已经存在于CrudRepository中,所以我不能用不同的返回类型覆盖它,还有其他方法可以存档它吗?

2 个答案:

答案 0 :(得分:1)

我刚才发现我不需要覆盖它,因为我可以使用getBy代替findBy

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

答案 1 :(得分:0)

或者,您可以泛化该方法并传入dto类。

<T> T findById(Integer id, Class<T> type);

这也适用于Optional。

<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