@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 来检索两个特定节点(A
和B
的某些实例)之间的关系实体的目标。
我尝试了以下密码查询:
MATCH (a:A)-[i:INCLUDES]-(b:B) RETURN i;
但是,这只给了我一个空洞的结果。如果我使用默认的INCLUDE
实现检索了所有Neo4jRepository.findAll()
关系实体,则可以看到所有属性都已设置。
感谢您的帮助!
答案 0 :(得分:1)
自定义查询还必须返回A
和B
。 Spring Data Neo4j需要它们来区分是否可以映射关系INCLUDES
。返回的INCLUDE
可能确实连接了数据库中的C
和D
。这将导致错误的(且不完整的)映射关系。
还要记住,您的A
类中的映射应引用R
而不是B
,以在所有情况下均能获得正确的行为。
答案 1 :(得分:1)
尝试一下
MATCH (a:A)-[i:INCLUDES]-(b:B) RETURN i, a, b;