neo4j - 我怎样才能让 Neo4j OGM 连接从复杂查询返回的所有 POJO?

标签 neo4j spring-data-neo4j neo4j-ogm

假设我有这样的查询:

START a=node(1), b=node(2) MATCH p=a-[:LINKED_TO*0..]->b 
WITH nodes(p) as pathList UNWIND pathList AS pathNode 
MATCH breakfast=pathNode-[:HAS_A]->(:Bagel) 
RETURN pathList, breakfast

我想要一个 List<Node>对应pathList ,并且我希望该列表中的每个节点都定义了它的 Bagel。我可以得到 Iterable<Map<String, Object>>来自包含所有信息的查询,但 POJO 具有空字段,理想情况下它们会相互引用。

有没有办法让 OGM 从这样的查询中吐出完全链接的域对象?

最佳答案

是的,如果您使用 OGM 2.x 并且您能够编写您的查询,以便它返回您想要映射的节点关系。

例如,使用您的查询的简化版本-

START a=node(1), b=node(2) 
MATCH p=a-[:LINKED_TO*0..]->b 
RETURN nodes(p) as pathList, rels(p) as rels

pathList将为您提供映射域实体列表。为您映射的相关实体将是您在 rels 中返回的实体.

从本质上讲,您返回的就是映射的内容。如果只想映射一个相关实体,则只返回与其结束节点的关系。

更多示例:https://github.com/neo4j/neo4j-ogm/blob/2.0/core/src/test/java/org/neo4j/ogm/persistence/session/capability/QueryCapabilityTest.java

如果您使用 OGM 1.x,如果您想要 Result,则不支持实体映射或 Iterable<Map<String, Object>>背部。但是,如果您使用 session.queryForObject,它将起作用或 session.query(Class<T> objectType, String cypher, Map<String, ?> parameters)

关于neo4j - 我怎样才能让 Neo4j OGM 连接从复杂查询返回的所有 POJO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36078020/

相关文章:

neo4j - 从 xml 文件初始加载 Neo4j 数据库

python - 从 cypher bolt 语句中获取结果

java - Neo4j OGM 关系仅在一个实体中

java - Neo4j:正确地对 bolt 驱动器进行单元测试

grails - grails neo4j如何定义关系及其属性

java - 带有 spring-data-neo4j 的唯一子节点

neo4j - Spring Data Neo4j 中的@Query shortestPath 返回类型

neo4j - 找不到 org.neo4j :neo4j-cypher-dsl:jar:2. 0.1 的依赖项

maven - spring boot 2.0 neo4j ogm 3.0兼容jetty版本

Neo4j 3.0.1 SDN 4.1.1.RELEASE 幻像节点