Pageable로 Limit 걸기
JPA, JPQL 을 사용하다가 Limit이 필요한 경우가 생겼었습니다.
JPQL에 limit을 사용하니 에러가 발생하여 찾아보니 JPA, JPQL 에서 limit의 기능을 사용하려면 다른 방법을 사용해야 합니다.
Pageable limitOneHundred = new PageRequest(startPosition, 100);
List<SelectAll> tempList = requestRepository.findAllByDate(startDate, targetDate, limitOneHundred);
@Query(value = "SELECT n " +
"FROM LogRequest n " +
"WHERE DATE(n.regDate) >= :date " +
"AND DATE(n.regDate) = :targetDate " +
"ORDER BY n.no")
public List<SelectAllNaver> findAllByDate(@Param("date") Date date,
@Param("targetDate") Date targetDate,
Pageable limitOneHundred);
Pageable 을 사용하면 limit을 사용하는 것처럼 범위를 지정하여 페이징을 할 수 있습니다.
혹은 아래와 같이 Query annotation의 nativeQuery 옵션을 true로 하여 limit을 사용하는 방법도 있습니다.
@Query(nativeQuery = true, value = "select * from SLSNotification s where s.userId = :userId ORDER BY snumber desc LIMIT 20")
List<SLSNotification> getUserIdforManage(@Param("userId") String userId);
참조.
'Database > JPA & JPQL' 카테고리의 다른 글
JPA JsonMappingException: Infinite recursion (StackOverflowError) - 무한루프 (0) | 2018.08.02 |
---|---|
[JPA] Id Annotation과 return cached data (0) | 2018.07.05 |
JPQL이란? (0) | 2018.06.18 |