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

时间:2019-02-15 16:55:12

标签: java spring-boot neo4j graph-databases spring-data-neo4j

@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;
}

使用属性 ALL 来检索两个特定节点(AB的某些实例)之间的关系实体的目标。

我尝试了以下密码查询:

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

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

还要记住,您的A类中的映射应引用R而不是B,以在所有情况下均能获得正确的行为。

答案 1 :(得分:1)

尝试一下

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