Сортировка не работает — доступ к данным с помощью JPA

#spring #hibernate #sorting #jackson #spring-data-jpa

#spring #спящий режим #сортировка #джексон #spring-data-jpa

Вопрос:

Я играл со стартером Spring «Доступ к данным с помощью JPA», добавляя свою собственную сущность и соответствующий репозиторий.

 @RepositoryRestResource(collectionResourceRel = "orders", path = "orders")
@CrossOrigin(maxAge = 3600)
public interface OrderRepository extends PagingAndSortingRepository<Order, Long> {
  

Маршруты без контроллера отлично работают для простой подкачки, но я ничего не могу сделать, чтобы заставить сортировку работать.

Есть два случая. Один:

 http://192.168.0.163:8080/orders?sort=order_idamp;order_id.dir=desc
  

В этом случае аргумент сортировки не имеет никакого эффекта. Независимо от того, какую комбинацию я пробую, порядок сортировки не изменяется. Я включил show queries в STS, и предложение «order by» не генерируется.

Второй случай — для некоторых имен полей в sort= , в Spring есть исключение нулевого указателя:

 2016-10-07 14:32:48.426 DEBUG 8292 --- [nio-8080-exec-8] .w.s.m.m.a.ServletInvocableHandlerMethod : Error resolving argument [1] [type=org.springframework.data.rest.webmvc.support.DefaultedPageable]
HandlerMethod details: 
Controller [org.springframework.data.rest.webmvc.RepositoryEntityController]
Method [public org.springframework.hateoas.Resources<?> org.springframework.data.rest.webmvc.RepositoryEntityController.getCollectionResource(org.springframework.data.rest.webmvc.RootResourceInformation,org.springframework.data.rest.webmvc.support.DefaultedPageable,org.springframework.data.domain.Sort,org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler) throws org.springframework.data.rest.webmvc.ResourceNotFoundException,org.springframework.web.HttpRequestMethodNotSupportedException]


java.lang.NullPointerException: null
    at org.springframework.data.rest.webmvc.json.JacksonMappingAwareSortTranslator$SortTranslator.translateSort(JacksonMappingAwareSortTranslator.java:101) ~[spring-data-rest-webmvc-2.5.3.RELEASE.jar:na]
    at org.springframework.data.rest.webmvc.json.JacksonMappingAwareSortTranslator.translateSort(JacksonMappingAwareSortTranslator.java:70) ~[spring-data-rest-webmvc-2.5.3.RELEASE.jar:na]
    at org.springframework.data.rest.webmvc.json.MappingAwareDefaultedPageableArgumentResolver.resolveArgument(MappingAwareDefaultedPageableArgumentResolver.java:73) ~[spring-data-rest-webmvc-2.5.3.RELEASE.jar:na]
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) ~[spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) [spring-webmvc-4.3.3.RELEASE.jar:4.3.3.RELEASE]
...
  

Я только что загрузил STS и starter на этой неделе, поэтому они должны быть последними версиями.

Комментарии:

1. Дополнительная информация — когда sort=xxx, где xxx не является именем доступа для объекта, он не завершает работу, но не сортируется. Сюда входит xxx, где xxx — это имя столбца в классе сущностей. Однако, если xxx является любым из имен столбцов в верблюжьей оболочке (т. Е. Соответствует методу доступа), Возникает исключение нулевого указателя. Только что обновлен до STS 3.8.2 — то же поведение.

2. У меня точно такая же проблема: <

Ответ №1:

Однако слишком поздно …. избегайте использования символов подчеркивания (например, ‘aaa_bbb’) внутри имен свойств / полей / геттеров-установщиков ваших объектов….