使用Spring Data Graph/Neo4j进行分页

3

当使用Spring Data Graph(Neo4J)作为数据存储时,是否可以获取Page结果?

使用GraphRepository时,findAll(Pageable)似乎是唯一可用的可分页查询。我正在寻找其他findBy***()查询的Pageable API。

也许,还有完全不同的(推荐的)方法来分页结果使用Spring Data Graph。关于此问题的想法也是受欢迎的!

1个回答

2

Spring Data Neo4j(目前在SNAPSHOT中,但很快就会发布RC1)为派生和注释查询添加了页面支持。 findAll() 继承自CRUD-Repository。

我们可以为默认查询方法添加页面支持。你能否为此提出一个JIRA问题

演示用于派生和@Query注释的页面方法。

interface UserRepository extends GraphRepository<User> {
   // derived method
   Page<User> findByTag(String tag, Pageable page);
   @Query("start user=node({0}) match user-[r:RATED]-product where r.stars > 3 return product order by r.stars desc")
   Page<Product> getRatedProducts(User user);
}

只需将密码(或gremlin)作为依赖项添加到您的应用程序中即可:
<dependency>
   <groupId>org.neo4j</groupId>
   <artifactId>neo4j-cypher</artifactId>
   <version>${neo4j.version}</version>
</dependency>

感谢提供详细信息,@Michael。如果派生方法能够正常工作,那我就没问题了 - 但是当我使用它们时,会出现一个错误 - “Cypher不可用,请将其添加到您的依赖项中”。有什么想法吗?同时,我会打开JIRA问题。 - Saket
添加依赖项修复了那个错误 - 谢谢!但是我现在遇到了查询两个属性的问题 = getByProperty1AndProperty2()。 - Saket
有什么问题?请提供更多上下文。 - Michael Hunger
2
对我来说,使用@Query注释参数处理分页并不是很清晰。这个例子的意思是该方法只能返回一个Page对象,还是有一种方法可以将Pageable参数传递给该方法,以便我只获取想要的页面? - Flo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接