如何在Spring Data Neo4j中基于一对多关系进行查询

时间:2017-01-04 09:41:25

标签: spring-data-neo4j spring-data-neo4j-4 neo4j-ogm

我已将简单的一对多关系定义为:

@Relationship(type = "BELONG")
private Set<Category> categories;

我想根据Category的确切集合查询所有对象。即实现类似的东西:

Page<SomeObject> findAllByCategories(Set<Category> categories, PageRequest page);

在Spring Data Neo4j中执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以选择如何做到这一点。

您的通话代码只需拨打float DynamicItemWidth { get { int ItemMinimumWidth = 300, margin = 16; //just some guesses var gridWidth = ...; var numberOfColumns = gridWidth % ItemMinimumWidth; var itemWidth = (gridWidth - margin * (numberOfColumns - 1)) / numberOfColumns; return itemWidth; } } 上的以下内容:

即可
SomeObjectRepository

请注意,此方法不支持分页。

另一种方法是在调用代码中注入Iterable<Long> ids = categories.stream().map(SomeObject::getId).collect(Collectors.toSet()); Iterable<SomeObject> someObjects = someObjectRepository.findAll(ids, 1); ,并编写自定义Cypher查询以检索所需对象,或者使用load by instance方法:

Session

我的建议是选项2,因为它几乎完全符合您的要求。