我正在使用spring-data-neo4j
v4.2.8
。
我有一个NodeEntity
和2个EntityRelationship
,一个用于传入,另一个用于传出。
我想使用存储库@Query方法为节点加载特定的过滤器。 所有关系都应随节点加载。这是我的查询
@Query(value = "MATCH (n:`Person`) WHERE {0} IN labels(n) RETURN n")
Iterable<Person> findAllByLabels(String label);
=>我正在加载带有两个标签Person
和一个特定标签的节点。
我尝试了很多事情:
像这样指定查询中的关系。
@Query(value = "MATCH (n:`Person`)<-[r]-() WHERE {0} IN labels(n) RETURN n")
Iterable<Person> findAllByLabels(String label);
在这种情况下,仅加载具有关系的节点,并且还有其他问题。
我必须采取什么替代措施。
谢谢。
答案 0 :(得分:0)
这是我到目前为止找到的解决方案
@Query(value = "MATCH (n:`Person`) WHERE {0} IN labels(n) MATCH (n1:`Person`)<-[r1]-(n2:`Person`) WHERE {0} IN labels(n1) RETURN n,n1,n2,r1")
答案 1 :(得分:0)
在下面,即使没有关系,您也可以返回每个节点。
@Query(value = "MATCH (n:`Person`) WHERE {0} IN labels(n)"
+ " OPTIONAL MATCH path=(n:`Person`)<-[r]-()"
+ " RETURN CASE path WHEN null THEN n ELSE path END")
Iterable<Person> findAllByLabels(String label);
仅映射
Person
类中可用的关系。