如何在 spring data neo4j 4 中查询路径?
How do I query for paths in spring data neo4j 4?
在 spring data neo4j (3.3.1) 的早期版本中,我能够在我的数据库中查询路径,并且 return 它们像这样 Iterable<EntityPath<S,E>>
:
public interface ArgumentNodeRepository extends GraphRepository<ArgumentNode> {
@Query("START t=node({0}), r=node({1}) MATCH p=t<-[:SUPPORTED_BY|INTERPRETS*0..]-r RETURN p")
Iterable<EntityPath<ArgumentNode, ArgumentNode>> getPaths(long childId, long rootId);
}
我正在尝试迁移到 4.0.0,但 EntityPath class 似乎已经消失了。我在 migration guide 中没有看到任何 EntityPath 的提及。我的新 return 类型是什么?
SDN 4 不支持 EntityPath,但您仍然可以查询路径。
我有一个示例 here,其中包含一个 Cypher 查询,该查询 return 是一个路径 - return 类型是 Iterable<Map<String, Object>>
这表示路径的集合,每个路径包含路径中的交错节点和关系的列表(节点和关系表示为 Map)。我如何处理路径的一个例子是 https://github.com/luanne/flavorwocky/blob/sdn/src/main/java/com/flavorwocky/service/PairingServiceImpl.java#L57
您也可以为此使用 Neo4jOperations。
只需创建自定义存储库实现(参见 http://docs.spring.io/spring-data/data-commons/docs/current/reference/html/#repositories.custom-implementations),然后从那里调用 Neo4jOperations bean:
neo4jOperations.queryForObjects(ArgumentNode.class, "START t=node({0}), r=node({1}) MATCH p=t<-[:SUPPORTED_BY|INTERPRETS*0..]-r RETURN p")
这将return一个ArgumentNodes列表
在 spring data neo4j (3.3.1) 的早期版本中,我能够在我的数据库中查询路径,并且 return 它们像这样 Iterable<EntityPath<S,E>>
:
public interface ArgumentNodeRepository extends GraphRepository<ArgumentNode> {
@Query("START t=node({0}), r=node({1}) MATCH p=t<-[:SUPPORTED_BY|INTERPRETS*0..]-r RETURN p")
Iterable<EntityPath<ArgumentNode, ArgumentNode>> getPaths(long childId, long rootId);
}
我正在尝试迁移到 4.0.0,但 EntityPath class 似乎已经消失了。我在 migration guide 中没有看到任何 EntityPath 的提及。我的新 return 类型是什么?
SDN 4 不支持 EntityPath,但您仍然可以查询路径。
我有一个示例 here,其中包含一个 Cypher 查询,该查询 return 是一个路径 - return 类型是 Iterable<Map<String, Object>>
这表示路径的集合,每个路径包含路径中的交错节点和关系的列表(节点和关系表示为 Map)。我如何处理路径的一个例子是 https://github.com/luanne/flavorwocky/blob/sdn/src/main/java/com/flavorwocky/service/PairingServiceImpl.java#L57
您也可以为此使用 Neo4jOperations。 只需创建自定义存储库实现(参见 http://docs.spring.io/spring-data/data-commons/docs/current/reference/html/#repositories.custom-implementations),然后从那里调用 Neo4jOperations bean:
neo4jOperations.queryForObjects(ArgumentNode.class, "START t=node({0}), r=node({1}) MATCH p=t<-[:SUPPORTED_BY|INTERPRETS*0..]-r RETURN p")
这将return一个ArgumentNodes列表