【问题标题】:Neo4j Spring Data GraphRepository param listNeo4j Spring Data GraphRepository 参数列表
【发布时间】:2014-09-10 18:31:02
【问题描述】:

我正在尝试使用 neo4j、spring 数据图存储库进行 Cypher IN 查询

公共接口 StuffRepository 扩展了 GraphRepository {

Vote findByUniqueKey(String uniqueKey);

@Query(value = "MATCH (Stuff)" +
        "USING INDEX n:Vote(uniqueKey)" +
        "WHERE n.uniqueKey IN {keys}" +
        "RETURN n")
List<Stuff> findAllWithKeys(@Param("keys") List<String> keys);

}

从日志中我可以看到生成的查询如下所示:

匹配(n:东西) 使用索引 n:Stuff(uniqueKey) WHERE n.uniqueKey IN {keys} 返回 n

参数 {keys=['key1', 'key2']}

(无论如何它就是这样记录的 - 我知道参数不会像密码那样传递)

如果我从日志中复制查询并在不使用参数的情况下运行它:

匹配(n:东西) 使用索引 n:Stuff(uniqueKey) WHERE n.uniqueKey IN ['key1', 'key2'] 返回 n

它可以工作,并返回我的 2 个“东西”,但从我的存储库查询中,我得到的结果为零。

任何想法为什么 params 不能像我对 Cypher 的期望一样工作?

【问题讨论】:

    标签: neo4j spring-data spring-data-neo4j


    【解决方案1】:

    您可以尝试使用 string[] 代替吗,可能是参数转换中的错误。如果是这样,请提出 jira 问题。

    【讨论】:

    • 感谢您回来,我已尝试使用 String[],但现在记录的参数有一个丑陋的 toString() osdnrSpringRestCypherQueryEngine:执行远程密码查询:MATCH (n:Stuff) USING INDEX n :Stuff(uniqueKey) WHERE n.uniqueKey IN {keys} RETURN n params {keys=[Ljava.lang.String;@1aaada09} 结果仍然为零。你认为这是一个错误吗?要我升一个jira吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多