我需要一个Spring Data Neo4J存储库方法,该方法将名称列表作为输入,并返回具有特定标签的所有节点,这些节点具有其中一个名称,深度为1。
例如:
Set<Person> findAllByName(Set<String> names)
应该返回一个包含名称在&#34;名称&#34;中的所有人的集合。设置包括所有直接子节点。
我愿意编写自定义查询,过滤器或其他任何内容,我只想以某种方式使其工作。
我已经尝试使用Neo4jOperations.loadAllByProperties编写自定义存储库实现,但我无法弄清楚如何创建与列表匹配的过滤器。
谢谢, 亚历
答案 0 :(得分:1)
您可以在存储库中使用如下的密码查询:
@Query( "MATCH (a:Person) "+
"WHERE a.personId IN {0} " +
"RETURN a ")
List<Person> getPersonList(Set<String> personSet);
然后只需在控制器中调用存储库查询:
List<Person> listPerson = personRepository.getPersonList(names);
编辑:由于您希望也会填充Person的关系,因此基于this博客条目,以下内容可能会有效:
@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);