3
在Java应用程序中,我使用Spring-Data通过REST绑定访问Neo4j数据库。服务器端分页可能吗?
用作背景的spring.xml包含以下行:
<neo4j:config graphDatabaseService="graphDatabaseService" />
<neo4j:repositories base-package="org.example.graph.repositories"/>
<bean id="graphDatabaseService"
class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg index="0" value="http://example.org:1234/db/data" />
</bean>
我的仓库很简单:
public interface FooRepository extends GraphRepository<Foo> {
}
现在,我想通过一些Foo
小号循环:
for (Foo foo : fooRepository.findAll(new PageRequest(0, 5))) //...
但是,这个请求的表现是可怕的:它接管400秒(!)完成。
有点调试后,我发现春数据生成以下查询:
START `foo`=node:__types__(className="org.example.Foo") RETURN `foo`
然后,它看起来好像分页客户端上完成,所有Foo
秒(超过10万)被转移给客户。当使用Web界面向Neo4j服务器发出上述查询时,大约需要60秒。但是,如果我手动追加“限制5”,执行时间会缩短到0.5秒左右。
我在做什么错误,以便spring-data不使用服务器端,CYPHER分页?
根据Programming Model
像遍历和查询昂贵的操作是通过使用REST API那些呼叫转移在服务器侧有效地执行。
或者是否排除了分页?
在这种情况下我还有其他的选择吗?
好吧,所以我必须手动执行此操作。不是我正在寻找的答案,但现在我知道了。 :-) – Matthias