Как использовать JpaSort в Spring Data, чтобы возвращать нули последними?

В настоящее время я использую такую ​​конструкцию для сортировки:

new JpaSort( JpaSort.path( Datasheet_.componentSubtype )
                    .dot( ComponentSubtype_.componentType )
                    .dot( ComponentType_.name ) )
                    .and( new JpaSort( JpaSort.path( Datasheet_.componentSubtype )
                                              .dot( ComponentSubtype_.name ) ) )

Я видел в этом ответе, что API-интерфейс Hibernate Critaria позволяет это, но хотел бы использовать JPA.

1
Wim Deblauwe 27 Май 2014 в 23:24

2 ответа

Лучший ответ

Короткий ответ: вы не можете, поскольку JPA (читай: ни Criteria API, ни JPQL) не определяет средства для определения порядка сортировки для null s.

Возможно, вы захотите использовать Querydsl в качестве альтернативы нашему соответствующая абстракция предоставляет необходимый API для определения этого. Обратите внимание, однако, что Querydsl использует специальные расширения поставщика сохраняемости для сгенерированного JPQL

2
Oliver Drotbohm 28 Май 2014 в 08:43

Если вы используете Spring Data Pageable в контроллере Spring MVC таким образом

@RequestMapping(method = RequestMethod.GET) public Page<Address> list(Pageable pageable) {...}

И вы используете MySql, эти параметры URL могут помочь

?page=0&size=100&sort=isnull(streetLine2)&sort=streetLine2,desc
2
Andrii Karaivanskyi 24 Фев 2015 в 20:01