Closed veluxer62 closed 2 months ago
안녕하세요. 먼저 두 번째 문의주신 count 쿼리가 호출되지 않는 이유는 호출할 필요가 없기 때문입니다. 올려주신 내용을 보면 board가 총 3건 들어가 있고 Pageable로 10건 데이터를 조회하는 것으로 보입니다.
Spring은 리스트 조회에서 요청받은 10건 보다 적은 건수의 데이터가 조회되는 것을 보고 count의 추가 조회는 무의미하다고 판단합니다. 왜냐하면 10건 보다 적다면 이게 마지막 페이지일 것이기 때문입니다.
자세한 내용은 org.springframework.data.support.PageableExecutionUtils
을 참고 부탁드립니다.
첫 번째 경우는 Spring에서 Pageable을 select distinct new 쿼리를 제대로 파싱하지 못 하는 문제로 보여집니다. 이 이슈는 Spring Data JPA 측에 문의를 부탁드립니다. Kotlin JDSL은 Pageable의 count 쿼리 생성을 Spring 쪽에 위임하고 있기 때문입니다.
Kotlin JDSL을 경유하지 않고 Spring의 @Query
어노테이션을 사용해도 동일한 현상이 발생할 것입니다.
네.
Spring Data JPA
이슈에 아래와 같은 이슈가 있군요. 다른방법을 모색해봐야 할듯 합니다. 확인 감사합니다.
https://github.com/spring-projects/spring-data-jpa/issues/3098
카운트 쿼리도 말씀하신 부분도 PageableExecutionUtils
코드에서 확인되었습니다.
설명해주셔서 감사합니다 :)
안녕하세요. 아래와 같이 selectDistinctNew를 사용하여 페이징 쿼리를 호출하면 일부 페이지에서 오류가 발생하는 현상을 발견하여 문의드립니다.
현상
한편, 아래와 같이 페이지를 호출하면 오류가 발생하지 않는데요. 다만 페이징을 위해 호출되는 count 쿼리는 호출되지 않아 이부분도 함께 확인해주시면 감사하겠습니다.
전체 코드
Application.kt
BoardRepositoryTest.kt
build.gradle.kts