2013-09-11 1 views
5

Я использую плагин jQuery Datatables, чтобы отобразить список ордеров. При отладке моего приложения я наткнулся на следующее несоответствие.Spring-Data-JPA paging

Чтобы извлечь данные, я использовал @Query -Notation для моего пользовательского запроса:

@Query("select op from OrderPosition " + 
     "op where op.order.created >= ?1" + 
     " and op.depot in ?2" + 
     " and op.order.deliveryAddress.deliveryMode in ?3" + 
     " and op.pickStatus in ?4 and op.order.id like ?5 ") 
Page<OrderPosition> findOrderpositionsByFilterStatus(Date date, List<Integer>depots, List<DeliveryMode> deliveryModes, List<ArticleStatusType> pickStatus, String sSearch, Pageable p); 

произошла ошибка заключается в следующем:

У меня есть набор из 81 Orderpositions тестовых данных. В интерфейсе я могу фильтровать по нескольким критериям. Одним из критериев является deliveryMode (экспресс | стандарт). Я показываю 10 записей за раз. Общее количество доставки express составляет 6. При прокрутке страниц только 2 express. При фильтрации на express явно я получаю все 6.

Когда я добавить какой-то заказ: например

@Query("select op from OrderPosition " + 
     "op where op.order.created >= ?1" + 
     " and op.depot in ?2" + 
     " and op.order.deliveryAddress.deliveryMode in ?3" + 
     " and op.pickStatus in ?4 and op.order.id like ?5 " + 
     "order by op.order.id desc") 
Page<OrderPosition> findOrderpositionsByFilterStatus(Date date, List<Integer>depots, List<DeliveryMode> deliveryModes, List<ArticleStatusType> pickStatus, String sSearch, Pageable p); 

я получаю все 6 из их.

Что привело меня к вопросу:

При использовании не аннотированных запросов - либо общий findAll() или запросов от метода names- делает Spring-Data-JPA использовать order by -clause внутри, при обнаружении pageable? Или наоборот: Должен ли я добавить order by -clause в каждом из моих пользовательских запросов при использовании pageable?

+1

Действительно ли это актуально для включения в комплект данных Datatables? Даже если вы обнаружили ошибку, благодаря ей, мне кажется, что JPA/Spring-Data-JPA. – madth3

+0

Вы можете включить журнал, чтобы увидеть сгенерированный sql и проверить его. – study

+0

Можете ли вы отредактировать и опубликовать свое разрешение? Как выглядели ваши запросы и страница? – Blejzer

ответ

2

Да inded. Spring Data использует OrderBy (по умолчанию desc), если вы не указали далее. Посмотрите на Журналы:

SELECT t0.oid, t0.jpaversion, t0.amount, [...] 
FROM [...] 
WHERE [..] AND (t13.jpatype IS NULL OR t13.jpatype IN (?)) 
ORDER BY t0.oid DESC LIMIT ?, ? 

 Смежные вопросы

  • Нет связанных вопросов^_^