#spring #hibernate #spring-data-jpa #spring-data #jpa-2.0
#spring #переход в спящий режим #spring-data-jpa #spring-данные #jpa-2.0
Вопрос:
Я использую Spring’s Pageable для сортировки столбцов.
Рабочий пример приведен ниже:
Pageable pageable = PageRequest.of(0, countOfBookData.intValue(), getSortingDirection(sortingOrder), sortingField);
Где sortingOrder = ASC и sortingField = BookName
Вот запрос
@Query("SELECT bs FROM BookSummary bs WHERE bs.bookId=:bookId")
List<Books> getBookDetails(@Param("bookId") Integer bookId, Pageable pageable)
Но я застрял, когда мне нужно выполнить эту сортировку в пользовательском запросе.
Итак, я понятия не имею, как я могу выполнить сортировку, используя Pageable для приведенного ниже пользовательского запроса:
Public List<Tuple> getBookDetails(Integer bookId){
String query = "SELECT book.bookCd as bookCode, "
"book.name as bookName"
"FROM Book book WHERE book.bookId=:bookId";
return entityManager.createQuery(query , Tuple.class).setParameter("bookId", bookId).getResultList();
}
Ответ №1:
То же, что и в первом пользовательском запросе, но с использованием проекции, например:
public interface BookDetails {
String getBookCode();
String getBookName();
}
@Query("select b.bookCd as bookCode, b.name as bookName from Book b where b.bookId = ?1")
List<BookDetails> getBookDetails(Integer bookId, Pageable pageable);
Обратите внимание, что имена методов проекции должны совпадать с соответствующими псевдонимами в запросе.
Или без запроса:
List<BookDetails> getAllById(Integer bookId, Pageable pageable);
Комментарии:
1. Допустим, у меня есть ограничение на использование только пользовательского запроса. Что именно я ищу, так это сделать то же самое с пользовательским запросом, а не с @Query.
2. @DeskToDevelop у вас есть ограничение на использование
@Query
аннотаций или на использование методов запроса Spring Data JPA вообще? (смотрите Обновленный ответ)