Repo:
package com.example.ec.repo; import com.example.ec.domain.TourRating; import com.example.ec.domain.TourRatingPk; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.repository.CrudRepository; import org.springframework.data.rest.core.annotation.RepositoryRestResource; import java.util.List; import java.util.Optional; @RepositoryRestResource(exported = false) public interface TourRatingRepository extends CrudRepository<TourRating, TourRatingPk> { List<TourRating> findByPkTourId(Integer tourId); Optional<TourRating> findByPkTourIdAndPkCustomerId(Integer tourId, Integer customerId); Page<TourRating> findByPkTourId(Integer tourId, Pageable pageable); }
Controller:
@GetMapping public Page<RatingDto> getAllRatingsForTour(@PathVariable(value = "tourId") int tourId, Pageable pageable) { verifyTour(tourId); Page<TourRating> ratings = tourRatingRepository.findByPkTourId(tourId, pageable); return new PageImpl<>( ratings.get() .map(RatingDto::new) .collect(Collectors.toList()), pageable, ratings.getTotalElements() ); }