W jaki sposob moglbym dodac interfejs pageable tak, zeby dzialal on na klasie dto, ktora zawierac bedzie pola z dwoch klas?
Problem jest taki, że wszystko działa dobrze, dopoki chce sortowac pola z klasy którą pobieram dane z repozytorium :
@RepositoryRestResource
public interface TopicRepository extends JpaRepository<Topic, Long> {
Page<Topic> getTopicsByCategoryId(Long id, Pageable pageable);
Pola z topic sortuja sie i jest wszystko ok, jednak w moim DTO sa takze pola z klasy Post, ktora jest w stosunku jeden do wielu z Topic. niestety gdy chce uzyc jej element do sortowania DTO nie udaje sie to.
metoda z serwisu, potem tylko wywoluje w kontrolerze podajac odpowiednie parametry. zakomentowana czesc to drugi sposob ktory tez niestety nie dziala
public Page<TopicPaginationDto> getPaginationTopics(Long id, Pageable pageable){
Page<Topic> topics = topicRepository.getTopicsByCategoryId(id, pageable);
Page<TopicPaginationDto> topicPaginationDtos =
topics.map((Function<Topic, TopicPaginationDto>) topic -> new TopicPaginationDto( topic.getId(),
topic.getTitle(), topic.getTopicAuthor().getUsername(),
newestPost(topic.getId()).getPostAuthor().getUsername(),
topic.getDisplayed(), topic.isPinned(), topic.getPosts().size(),
newestPost(topic.getId()).getPostCreatedDate(),
topic.getTopicCreatedDate())
);
// return new PageImpl<>(topics.stream().map(topic -> new TopicPaginationDto(
// topic.getId(),
// topic.getTitle(), topic.getTopicAuthor().getUsername(),
// newestPost(topic.getId()).getPostAuthor().getUsername(), -- metoda newestPost(topic.getId) zwraca potrzebujacego posta
// topic.getDisplayed(), topic.isPinned(), topic.getPosts().size(),
// newestPost(topic.getId()).getPostCreatedDate(),
// topic.getTopicCreatedDate()
// )).collect(Collectors.toList()), pageable, topics.getTotalElements());
return topicPaginationDtos;
}
Probowalem takze przez @Query jednak trudne jest do napisania dla mnie otrzymanie wszystkich tematow okreslonej kategorii oraz post kazdego tematu posiadajacy najnowsza date
Prosze o podpowiedz w jaki sposob moge tego dokonac,
pozdrawiam