Spring 数据 Neo4j - RelationshipEntity 的(所有)属性
Spring Data Neo4j - (all) properties of RelationsshipEntity
@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
和B
的某些实例)之间的关系实体及其属性ALL。
我尝试了以下密码查询:
MATCH (a:A)-[i:INCLUDES]-(b:B) RETURN i;
然而,这只会给我一个空的结果。如果我使用默认 Neo4jRepository.findAll()
实现检索所有 INCLUDE
关系实体,我可以看到所有属性都已设置。
感谢您的帮助!
自定义查询还必须 return A
和 B
。 Spring Data Neo4j 需要它们来区分关系 INCLUDES
是否可以映射。可能 returned INCLUDE
确实连接了数据库中的 C
和 D
。这会导致错误(和不完整)的映射关系。
另请记住,您的 A
class 中的映射应引用 R
而不是 B
以在所有情况下获得正确的行为。
试试这个
MATCH (a:A)-[i:INCLUDES]-(b:B) RETURN i, a, b;
@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
和B
的某些实例)之间的关系实体及其属性ALL。
我尝试了以下密码查询:
MATCH (a:A)-[i:INCLUDES]-(b:B) RETURN i;
然而,这只会给我一个空的结果。如果我使用默认 Neo4jRepository.findAll()
实现检索所有 INCLUDE
关系实体,我可以看到所有属性都已设置。
感谢您的帮助!
自定义查询还必须 return A
和 B
。 Spring Data Neo4j 需要它们来区分关系 INCLUDES
是否可以映射。可能 returned INCLUDE
确实连接了数据库中的 C
和 D
。这会导致错误(和不完整)的映射关系。
另请记住,您的 A
class 中的映射应引用 R
而不是 B
以在所有情况下获得正确的行为。
试试这个
MATCH (a:A)-[i:INCLUDES]-(b:B) RETURN i, a, b;