我需要一个Spring Data Neo4J存储库方法,该方法将名称列表作为输入,并返回具有这些名称之一的特定标签的所有节点,深度为1。
例如:Set<Person> findAllByName(Set<String> names)
应该返回一个集合,其中包含名字在"names"集合中的所有person,包括它们的所有直接子节点。
我愿意编写自定义查询,过滤器或其他任何东西,我只是想让它以某种方式工作。
我已经尝试使用Neo4jOperations编写一个自定义存储库实现。loadAllByProperties,但我不知道如何创建一个过滤器匹配一个列表。
谢谢,亚历克斯
您可以在存储库中使用如下的密码查询:
@Query( "MATCH (a:Person) "+
"WHERE a.personId IN {0} " +
"RETURN a ")
List<Person> getPersonList(Set<String> personSet);
然后在控制器中调用存储库查询:
List<Person> listPerson = personRepository.getPersonList(names);
EDIT:由于您也希望填充Person的关系,因此基于此博客条目,可以执行以下操作:
@Query( "MATCH (a:Person) "+
"WHERE a.personId IN {0} "+
"WITH a "+
"MATCH p=(a)-[r*0..1]-()"+
"RETURN a, nodes(p), rels(p)")
List<Person> getPersonList(Set<String> personSet);