Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring数据中@Query参数的集合?Neo4j_Neo4j_Spring Data Neo4j - Fatal编程技术网

Spring数据中@Query参数的集合?Neo4j

Spring数据中@Query参数的集合?Neo4j,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,如何创建基于IN子句进行搜索的查询?文件似乎不清楚?以下代码编译并运行,但结果集不是预期的节点 public interface SomeRepository extends GraphRepository<SomeNode> { @Query("START n=node({nodeid}) MATCH (n)-[r]-(p) WHERE p.id IN [{someids}] RETURN p") public Set<SomeNode> findByIds(

如何创建基于IN子句进行搜索的查询?文件似乎不清楚?以下代码编译并运行,但结果集不是预期的节点

public interface SomeRepository extends GraphRepository<SomeNode> {

  @Query("START n=node({nodeid}) MATCH (n)-[r]-(p) WHERE p.id IN [{someids}] RETURN p")
  public Set<SomeNode> findByIds(@Param("nodeid") Long rootNodeId, @Param("someids") Set<Long> someIds);

}

@NodeEntity
public class SomeNode {

  @GraphId
  private Long internalId;

  @Indexed(unique = true)
  private Long id;

  // getters setters omitted.

}
公共接口SomeRepository扩展了GraphRespository{ @查询(“START n=node({nodeid})MATCH(n)-[r]-(p),其中[{someids}]中的p.id返回p”) 公共集findByIds(@Param(“nodeid”)Long rootNodeId,@Param(“someid”)Set someid); } @节点性 公共类节点{ @格拉希德 私有长内ID; @索引(唯一=真) 私人长id; //省略了getters setters。 }
谢谢。

正如您在评论中提到的,您应该从in子句中删除“[]”。Spring数据中的一个示例工作查询

@Query("MATCH (item:Item{id:{0}})-[:ALIGNS_TO]->(category:Category)
        ,(suggestItem:Item)-[:ALIGNS_TO]->(category)
        Where NOT(suggestItem.id IN {2})
        return suggestItem.id
        ORDER BY suggestItem.avg_rating DESC limit {1} ")

List<Integer> getCategoryItems( Integer itemId,int limit ,Set<Integer> excludeSet);
@Query(“匹配(项:项{id:{0}})-[:对齐到]->(类别:类别)
,(suggestItem:Item)-[:对齐到]->(类别)
其中不是(在{2}中的suggestItem.id)
return suggestItem.id
按suggestItem.avg_rating DESC limit{1}排序
列出getCategoryItems(整数项ID、整数限制、集合排除集合);

在不重新访问SDN的情况下,您的
p.id
是您自己的id属性,不是吗?与cypher中检索到的具有
ID(p)
的Neo4j ID不同?是。。在本例中,id是节点(in?)的属性。不是节点的ID。您所说的“结果集不是预期的节点”是什么意思?你能展示一下你是如何定义id属性的吗?它和@GraphId注释的id是不同的字段吗?无论如何,您可以尝试删除{someids}周围的方括号。如果存在预期的节点,则不会返回任何结果。打开调试后,我看到下面的查询START n=node({nodeid})MATCH(n)-[r]-(p),其中[{someids}]中的p.id返回p params{someids=[1,2],nodeid=1}当我在neo4j中运行查询,替换实际输入中的参数时,我得到了预期的结果。我没有足够的声誉来回答我自己的问题(我想)但我通过添加关系标签并删除IN语句周围的[]解决了这个问题。结果表明,您不需要[],添加它会导致查询不返回任何结果。此外,我还有一些连接到节点n的节点,它们没有id值。