Как выполнить сортировку с несколькими полями по пользовательскому запросу JPQL с Spring Pageable - PullRequest
0 голосов
/ 14 марта 2019

Я использую Pageable Spring для сортировки столбцов.

Рабочий пример ниже:

  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)

Но я застрял, когда мне нужно выполнить эту сортировку в Custom мой пользовательский запрос. Поэтому я понятия не имею, как я могу выполнить сортировку, используя 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 Ответ

0 голосов
/ 14 марта 2019

То же, что и в первом пользовательском запросе, но с использованием Проекция , например:

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);
...