【问题标题】:Spring Data Neo4j 6: findAll() operation doesn't map relationships properlySpring Data Neo4j 6:findAll() 操作无法正确映射关系
【发布时间】:2023-03-13 19:33:01
【问题描述】:

在 Spring Data Neo4j 6 (6.0.1) 中,具有简单关系的基本 Neo4jTemplate findAll() 操作似乎不会映射关系实体及其目标,即使它们是结果集的一部分。这是一个错误还是我错过了什么?

让我们考虑以下基本场景:

var a = new EntityA();
var b = new EntityB();
a.entityB = b;

neo4jTemplate.save(a);

@Node
public class EntityA {
    @Id @GeneratedValue(UUIDStringGenerator.class)
    public String id;

    @Relationship("HAS_ENTITY_B")
    public EntityB entityB;
}

@Node
public class EntityB {
    @Id @GeneratedValue(UUIDStringGenerator.class)
    public String id;
}

当尝试像这样映射结果时:

var result = neo4jTemplate.findAll("MATCH (a:EntityA)-[r:HAS_ENTITY_B]->(b:EntityB) RETURN a,r,b", EntityA.class);
Assert.notNull(result.get(0).entityB, "entityB should not be null here!");

我希望 entityB 属性不为空。

【问题讨论】:

    标签: spring-data spring-data-neo4j


    【解决方案1】:

    这当然不是预期的行为,但您应该这样编写查询:

    MATCH (a:EntityA)-[r:HAS_ENTITY_B]->(b:EntityB) RETURN a, COLLECT(r), COLLECT(b)
    

    目前,SDN 6 中似乎缺少有关自定义查询和关系的文档和实施(请参阅 this ticketthis one)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多