Есть две сущности POST и TAG , они связаны отношением "многие ко многим".
Post
@ManyToMany
@JoinTable(name = "posts_tags",
joinColumns = @JoinColumn(name = "post_id"),
inverseJoinColumns = @JoinColumn(name = "tag_id"))
private List<Tags> tags = new ArrayList<>();
Tag
@ManyToMany(mappedBy = "tags")
@JsonIgnore
private List<Posts> posts = new ArrayList<>();
В зависимости от того, какой Tag я выбрал, должны отображаться все сообщения, зависящие от него.Все сообщения должны отображаться с использованием разбиения на страницы и сортировки, которые выбирает пользователь.
Проблема заключается в том, что сортировка и разбиение на страницы игнорируются.
Моя первая попытка
public Page<Posts> getPostsByTag(String tag, Integer page, Integer size, String sort, String dir){
Tags tags = tagsRepository.findByTagName(tag);
Pageable pageable = PageRequest.of(page,size, dir.equals("asc") ? Sort.Direction.ASC : Sort.Direction.DESC,sort);
return new PageImpl<>(tags.getPosts(),pageable,tags.getPosts().size());
}
Моя вторая попытка
public Page<Posts> getPostsByTag(String tag, Integer page, Integer size, String sort, String dir){
Tags tags = tagsRepository.findByTagName(tag);
PagedListHolder pagedListHolder = new PagedListHolder(tags.getPosts());
pagedListHolder.setPage(page);
pagedListHolder.setPageSize(size);
pagedListHolder.setSort(new MutableSortDefinition(sort, true ,dir.equals("asc")));
return new PageImpl<>(pagedListHolder.getPageList());
}
При второй попытке разбивка на страницы работает, а сортировка - нет.Как получить список tags.getPosts () отсортированный?