2016-11-17 43 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); 

一切按预期工作!感谢大家 !!!