我目前正在评估OGM/Spring Data Neo4j的用例,并遇到以下问题:
当通过Spring Data@Query
注释或直接通过Neo4jSession
执行自定义Cypher查询时,结果仅包含直接查询的节点,而不包含相关节点(结果节点对象中的关系为null
)。即这些查询的深度似乎是0而不是1,正如我从文档中预期的那样。
如何通过深度为1的OGM或Spring Data Neo4j执行自定义Cypher查询?
默认深度1指的是来自存储库和派生查找器的findOne/findAll/…方法。
这是留档关于自定义查询的说明:
在当前版本中,自定义查询不支持分页、排序或自定义深度。此外,它不支持将路径映射到域实体,因此不应从Cypher查询返回路径。相反,返回节点和关系以将它们映射到域实体。
http://docs.spring.io/spring-data/data-neo4j/docs/current/reference/html/#reference:session:loading-entities:cypher-queries
例如,当您有查询时
MATCH (n:MyLabel)-[r]-(n2)
WHERE ... // some condition
RETURN n,r,n2
在RetURN子句中列出要映射到对象的所有节点/关系。