From 55940c5fe7b49df84a791579b8024c7b916b67a2 Mon Sep 17 00:00:00 2001 From: Takiguchi Date: Wed, 23 Jan 2019 22:19:06 +0100 Subject: [PATCH] Correction of route /api/posts/last from lazy relations. --- .../java/org/codiki/core/repositories/PostRepository.java | 7 ++++--- src/main/java/org/codiki/posts/PostController.java | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/codiki/core/repositories/PostRepository.java b/src/main/java/org/codiki/core/repositories/PostRepository.java index ae8121e..fecdfd3 100755 --- a/src/main/java/org/codiki/core/repositories/PostRepository.java +++ b/src/main/java/org/codiki/core/repositories/PostRepository.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Optional; import org.codiki.core.entities.persistence.Post; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; @@ -15,9 +16,9 @@ public interface PostRepository extends CrudRepository, PostSearchRe @Query("SELECT p FROM Post p WHERE p.key = :postKey") Optional getByKey(@Param("postKey") final String pPostKey); - @Query(value = "SELECT * FROM post p INNER JOIN \"user\" u ON u.id = p.creator_id ORDER BY p.creation_date DESC LIMIT :limit", - nativeQuery = true) - List getLast(@Param("limit") final Integer pLimit); + // TODO : Remove "JOIN FETCH u.role", actually necessary for JSON serialization + @Query("SELECT p FROM Post p JOIN FETCH p.author u JOIN FETCH u.role ORDER BY p.creationDate DESC") + List getLast(Pageable pPageable); @Query(value = "SELECT * FROM post p INNER JOIN \"user\" u ON u.id = creator_id WHERE category_id = :categoryId ORDER BY creation_date DESC", nativeQuery = true) diff --git a/src/main/java/org/codiki/posts/PostController.java b/src/main/java/org/codiki/posts/PostController.java index c68a4a1..0d8873b 100755 --- a/src/main/java/org/codiki/posts/PostController.java +++ b/src/main/java/org/codiki/posts/PostController.java @@ -18,6 +18,7 @@ import org.codiki.core.repositories.PostRepository; import org.codiki.core.services.ParserService; import org.codiki.core.services.UserService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -78,7 +79,7 @@ public class PostController { @GetMapping("/last") public List getLast() { - return postRepository.getLast(LIMIT_POSTS_HOME).stream() + return postRepository.getLast(PageRequest.of(0, LIMIT_POSTS_HOME)).stream() .map(PostDTO::new).collect(Collectors.toList()); }