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