SpringDataNeo4j-4使用自定义查询派生查找程序

时间:2016-02-08 11:52:51

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

我目前正在使用SpringDataNeo4j-4.1.0-BUILD-SNAPSHOT。我使用“extends GraphRepository"”访问数据库。结构和Neo4jTemplate。除了其他事项,我使用简单的派生查询器查询,如:

Event findById (Long id) 

这样可以正常工作并按预期返回结果。现在我有一些情况,我想通过属性找到一个条目,但只检索某些关系:

@Query("MATCH (n:Event{dbId:{0}})-[r:species|figure]->(m) RETURN n,r,m")
Event findById (Long id)

我知道现在不支持。是否有可能解决此问题的方法,而不必自己构建对象,并且这将在SDN的未来版本中实现,因为OGM 2.0.0-M01现在可以执行这样的查询吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Neo4jTemplate.query并从Result中检索“n”。

n将是一个Event,它已经为species和'figure`的属性和关系充气。

或者,您可以创建一个@QueryResult,使用自定义Query注释的存储库方法返回,然后您仍然可以返回水合事件。

此功能已在SDN 4.1快照中提供(4.1.0.BUILD-SNAPSHOT)

您的上述查询 @Query("MATCH (n:Event{dbId:{0}})-[r:species|figure]->(m) RETURN Return n,r,m") Event findById (Long id) 不受支持,因为查询返回了三个实体,但只有一个实体可以返回。