2016-11-17 79 views
1

我需要對SDN 4中的一些自定義查詢進行分頁和排序。我將SDN升級到最新的可用版本:版本4.2 M1(Ingalls)並基於此ticket該版本的問題已得到解決。然而,當我嘗試做任何排序或分頁它拋出異常說:無法對SpringDataNeo4j進行排序和分頁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

enter image description here 正如你可以看到有對PageRequest對象不支持的if/else子句...我使用'org.neo4j.driver',name:'neo4j-java-driver',version:'1.1.0-M06'....(最新版本)

我試過了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

+0

我相信M1的構建是陳舊的,你可以試試'4.2.0.BUILD-SNAPSHOT'嗎? –

+0

@JasperBlues我檢查了https://repo.spring.io/libs-snapshot/org/springframework/data/spring-data-neo4j/好像4.2.0.M1 /更新。 – Lina

+0

文件夾日期較舊,但最近的工件內部於十一月十六日發佈。 –

回答

3

感謝SDN主動通信ity & Jasper Blues,問題解決了。這些都是要遵循的步驟:

1)確保您使用springDataNeo4j =「4.2.0.BUILD-快照」和「neo_ogm =」 2.1.0-快照」依賴從下列資料庫獲取放入系統: 行家{URL 'https://repo.spring.io/libs-snapshot '} 行家{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); 

一切按預期工作!感謝大家 !!!