在我的存储库中,我需要使用Projection作为findById方法:
@Repository
public interface ForumRepository extends CrudRepository<Forum,Integer> {
ForumDTO findById(Integer id);
}
但是由于findByID已经存在于CrudRepository中,所以我不能用不同的返回类型覆盖它,还有其他方法可以存档它吗?
答案 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