Spring Data Neo4j可分页

我有一个Spring Data Repository接口,它使用自定义查询从数据库中获取节点集合:

存储库方法:

@Query ("START r = node({0}) MATCH r <-[:AUTHOR]- m RETURN m") public Page findObjectById (long objectId,Pageable pageable); 

方法调用

  custRepository.findObjectById (4,new PageRequest(0, 5)); 

这将返回一个对象集合,但页面信息不正确。 数据库中有足够的数据供我获取多页数据。 第一页信息说有:

  Current Page #: 0 Total Pages: 1 Is First Page: true Is last Page: true 

但是,当我获取第二页时,我仍然获得其他对象的集合,然后页面信息变为:

  Current Page #: 1 Total Pages: 6 Is First Page: false Is last Page: false 

这清楚地表明第一页上的页面信息不正确,因为我需要准确的信息来在我的应用程序中实现分页,这就成了一个问题。 是什么导致了这个问题,我该如何解决?

我提出同样的问题。 事实certificate,您还必须指定查询注释的countQuery属性。 不确定它是否有错误记录。 在你的情况下应该是

 @Query (value="START r = node({0}) MATCH r <-[:AUTHOR]- m RETURN m", countQuery="START r = node({0}) MATCH r <-[:AUTHOR]-m RETURN count(m)") 

希望它能帮到你。

我遇到了同样的问题,经过一些研究,我在类org.springframework.data.neo4j.repository.query.GraphRepositoryQuery中发现了一个错误。

以下方法是问题所在

 @SuppressWarnings({"unchecked", "rawtypes"}) protected Object createPage(Iterable result, Pageable pageable, Long count) { final List resultList = IteratorUtil.addToCollection(result, new ArrayList()); if (pageable==null) { return new PageImpl(resultList); } long currentTotal; if (count!=null) { currentTotal = count; } else { int pageSize = pageable.getPageSize(); long requestedCountStart = pageable.getOffset() * pageSize; long resultSize = resultList.size(); currentTotal = resultSize == pageSize ? requestedCountStart + pageSize : requestedCountStart+resultSize; } return new PageImpl(resultList, pageable, currentTotal); } 

特别是那些线:

  int pageSize = pageable.getPageSize(); long requestedCountStart = pageable.getOffset() * pageSize; 

转换为requestedCountStart = page * size * size

有谁知道在哪里提交Neo4j的错误报告的最佳位置?

BTW我使用的是spring-data-neo4j版本3.0.0.RELEASE