Не могу сделать сортировку и разбиение на страницы на SpringDataNeo4j 4.2 M1 (Ingalls)
Мне нужно выполнить разбиение на страницы и сортировку некоторых пользовательских запросов в SDN 4. Я обновил SDN до последней доступной версии: версии 4.2 M1 (Ingalls), и на основе этого тикета проблема исправлена в этой версии. Однако, когда я пытаюсь выполнить какую-либо сортировку или разбиение на страницы, выдается исключение, говорящее, что:
org.neo4j.ogm.exception.CypherException: Error executing Cypher; Code: N/A; Description: Unable to convert org.springframework.data.domain.PageRequest to Neo4j Value.
Это код, который я использую:
Pageable pageable = new PageRequest(0, 3, Sort.Direction.DESC, "name");
owners = ownerRepository.getOwnersByFacetGroupId(facetGroupId, pageable);
и это мой запрос к хранилищу:
public interface OwnerRepository extends Neo4jRepository<Owner> {
@Query("MATCH (n:OWNER)-[r:HAS]-(c:FACET_GROUP) Where id(c)={0} RETURN n")
List<Owner> getOwnersByFacetGroupId(Long id , Pageable pageable);}
и это последний запрос, который использует neo4j:
Request: MATCH (n:OWNER)-[r:HAS]-(c:FACET_GROUP) Where id(c)={0} RETURN n ORDER BY n.name DESC with params {0=9275402, 1={sort=[{direction=DESC, property=n.name, ignoreCase=false, nullHandling=NATIVE, ascending=false}], offset=0, pageSize=3, pageNumber=0}}
Что-нибудь еще, что я должен изменить, чтобы использовать сортировку и нумерацию страниц? Можете ли вы привести примеры для новой реализации?
Это класс, который вызывает исключение: org.neo4j.driver.v1.Values
Как видите, в выражениях if / else отсутствует поддержка объекта PageRequest... Я использую 'org.neo4j.driver', имя: 'neo4j-java-driver', версия: '1.1.0-M06' ....(последняя версия)
Я пробовал оба снимка / публичные jar для SDN https://repo.spring.io/libs-snapshot/org/springframework/data/spring-data-neo4j/4.2.0.M1/ и https://mvnrepository.com/artifact/org.springframework.data/spring-data-neo4j/4.2.0.M1
1 ответ
Благодаря активному сообществу SDN и Jasper Blues, проблема решена. Вот следующие шаги:
1) Убедитесь, что вы используете зависимости springDataNeo4j= "4.2.0.BUILD-SNAPSHOT" и "neo_ogm="2.1.0-SNAPSHOT". Получите thoses из следующих репозиториев: maven {url ' https://repo.spring.io/libs-snapshot'} maven {url' http://m2.neo4j.org/content/repositories/snapshots'}
2) НЕ изменяйте ваши @EnableNeo4jRepositories на @EnableExperimentalNeo4jRepositories и GraphRepository на Neo4jRepository ... Эти изменения не включены в эту сборку снимка.
3) Чтобы получить отсортированный по страницам результат, используйте этот код в качестве примера:
Pageable pageable = new PageRequest(0, 3, Sort.Direction.DESC, "name");
Page<Owner> owners = ownerRepository.executeMyQuery(pageable);
Все работает как положено! Спасибо всем!!!