Spring Data Neo4j - RelationsshipEntity的(所有)属性

问题描述 投票:0回答:2
@NodeEntity
class A {
    @Relationship(type = "INCLUDES", direction = Relationship.UNDIRECTED)
    List<B> bs;
}

@NodeEntity
class B {}

class C {
    int something;
}

@RelationshipEntity(type = "INCLUDES")
class R {
    String property1;
    int property2;
    C c;

    @StartNode
    A a;

    @EndNode
    B b;
}

目标是检索两个特定节点(Aand B的某些实例)与其所有属性之间的关系实体。

我尝试了以下cypher查询:

MATCH (a:A)-[i:INCLUDES]-(b:B) RETURN i;

但是,这只会给我一个空洞的结果。如果我使用默认的INCLUDE实现检索所有Neo4jRepository.findAll()relationship实体,我可以看到所有属性都已设置。

谢谢你的帮助!

java spring-boot neo4j graph-databases spring-data-neo4j
2个回答
1
投票

试试这个

MATCH (a:A)-[i:INCLUDES]-(b:B) RETURN i, a, b;

1
投票

自定义查询还必须返回As和Bs。 Spring Data Neo4j需要它们来区分是否可以映射关系INCLUDES。可能是返回的INCLUDE确实在数据库中连接了Cs和Ds。这将导致错误(和不完整)的映射关系。

另外请记住,A类中的映射应该引用R而不是B来获得所有情况下的正确行为。

© www.soinside.com 2019 - 2024. All rights reserved.